00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "CommonFramework.h"
00017
00018
00019
00020
00021 class CTestOne : public CBase
00022 {
00023 public:
00024 ~CTestOne();
00025 void SetTextL(const TDesC& aData);
00026 private :
00027 HBufC* iText;
00028 };
00029
00030
00031
00032
00033
00034 _LIT(KTxtInsideDestructor,"Executing the CTestOne destructor\n");
00035 CTestOne::~CTestOne()
00036 {
00037 delete iText;
00038 console->Printf(KTxtInsideDestructor);
00039 }
00040
00041 void CTestOne::SetTextL(const TDesC& aData)
00042 {
00043 if (iText)
00044 {
00045 delete iText;
00046 iText = NULL;
00047 }
00048 iText = aData.AllocL();
00049 }
00050
00051
00052
00053
00054
00055
00056 class RTestTwo
00057 {
00058 public:
00059 RTestTwo(TInt aValue);
00060 void Close();
00061 private :
00062 TInt iX;
00063 };
00064
00065
00066
00067
00068 RTestTwo::RTestTwo(TInt aValue)
00069 : iX(aValue)
00070 {
00071 }
00072
00073
00074 _LIT(KTxtCloseRTestTwo,"RTestTwo closing\n");
00075
00076 void RTestTwo::Close()
00077 {
00078 console->Printf(KTxtCloseRTestTwo);
00079 }
00080
00081
00082
00083
00084
00085
00086 class RTestThree
00087 {
00088 public:
00089 RTestThree(TInt aValue);
00090 void Release();
00091 private :
00092 TInt iY;
00093 };
00094
00095
00096
00097
00098 RTestThree::RTestThree(TInt aValue)
00099 : iY(aValue)
00100 {
00101 }
00102
00103
00104 _LIT(KTxtReleaseRTestThree,"RTestThree releasing\n");
00105
00106 void RTestThree::Release()
00107 {
00108 console->Printf(KTxtReleaseRTestThree);
00109 }
00110
00111
00112
00113
00114 _LIT(KTxtHelloWorld,"Hello World!");
00115 LOCAL_C void doExampleL()
00116 {
00117
00118 CTestOne* one = new (ELeave) CTestOne;
00119
00120
00121
00122 CleanupDeletePushL(one);
00123
00124
00125 one->SetTextL(KTxtHelloWorld);
00126
00127
00128
00129 CleanupStack::PopAndDestroy();
00130
00131
00132
00133
00134
00135 RTestTwo two(2);
00136
00137
00138
00139 CleanupClosePushL(two);
00140
00141
00142
00143
00144 CleanupStack::PopAndDestroy();
00145
00146
00147
00148
00149
00150
00151 RTestThree three(3);
00152
00153
00154
00155 CleanupReleasePushL(three);
00156
00157
00158
00159
00160 CleanupStack::PopAndDestroy();
00161
00162
00163 TInt heapSize1 = User::Heap().Count();
00164
00165 const TInt KNumObjects = 4;
00166 const TInt KStringLength = 10;
00167 TBuf<KStringLength>* four = new (ELeave) TBuf<KStringLength>[KNumObjects];
00168
00169
00170 CleanupArrayDeletePushL(four);
00171
00172
00173 TInt* mem = (TInt*)User::Alloc(100);
00174 delete mem;
00175
00176
00177
00178 CleanupStack::PopAndDestroy();
00179 if ( User::Heap().Count() == heapSize1 )
00180 {
00181 _LIT(KFourComplete,"Array deleted\n");
00182 console->Printf(KFourComplete);
00183 }
00184 }