delete Operator?
-
Hi,all In my application I am using the Class objects ass follows //In MainOne.h Class CMainOne { public: class CSomeA { public: int nXA; int nYA; }; class CSomeC { public: int nXC; int nYC; SomeA *objSomeA; }; SomeC * objSomeC; };//Class CMainOne //In MainOne.cpp CMainOne::MyFunction { objSomeC=new CSomec[10]; for(int nIndex=0;nIdex<10;nIndex++) { objSomeC[nIndex].objSomeA=new CSomeA[10]; } } can any one help me how can I delete these created objects with new operator by using delete operator. Note:I tried like this delete [] objSomec->objSomeA (which was "objSomeC[nIndex].objSomeA=new CSomeA[10];" delete [] objSomeC (which was objSomeC=new CSomec[10];) still i am getting memory leak; please help me regrads:rose: anju
-
Hi,all In my application I am using the Class objects ass follows //In MainOne.h Class CMainOne { public: class CSomeA { public: int nXA; int nYA; }; class CSomeC { public: int nXC; int nYC; SomeA *objSomeA; }; SomeC * objSomeC; };//Class CMainOne //In MainOne.cpp CMainOne::MyFunction { objSomeC=new CSomec[10]; for(int nIndex=0;nIdex<10;nIndex++) { objSomeC[nIndex].objSomeA=new CSomeA[10]; } } can any one help me how can I delete these created objects with new operator by using delete operator. Note:I tried like this delete [] objSomec->objSomeA (which was "objSomeC[nIndex].objSomeA=new CSomeA[10];" delete [] objSomeC (which was objSomeC=new CSomec[10];) still i am getting memory leak; please help me regrads:rose: anju
for(int nIndex=0;nIndex<10;nIndex++)
{
delete [] objSomeC[nIndex].objSomeA; // =new CSomeA[10];
}
delete [] objSomeC;If you want to do it at the object's destruction, you might use this variant:
class CMainOne
{public:
class CSomeA
{
public:
int nXA;
int nYA;
};class CSomeC
{
public:
~CSomeC()
{
delete [] objSomeA;
}
int nXC;
int nYC;
CSomeA *objSomeA;
};CMainOne();
~CMainOne()
{
delete [] objSomeC;
}
CSomeC * objSomeC;};//Class CMainOne
//In MainOne.cpp
CMainOne::CMainOne()
{
objSomeC=new CSomeC[10];for(int nIndex=0;nIndex<10;nIndex++)
{
objSomeC[nIndex].objSomeA=new CSomeA[10];
}
}with the usual checkins i've omitted for brevity. rechi
-
Hi,all In my application I am using the Class objects ass follows //In MainOne.h Class CMainOne { public: class CSomeA { public: int nXA; int nYA; }; class CSomeC { public: int nXC; int nYC; SomeA *objSomeA; }; SomeC * objSomeC; };//Class CMainOne //In MainOne.cpp CMainOne::MyFunction { objSomeC=new CSomec[10]; for(int nIndex=0;nIdex<10;nIndex++) { objSomeC[nIndex].objSomeA=new CSomeA[10]; } } can any one help me how can I delete these created objects with new operator by using delete operator. Note:I tried like this delete [] objSomec->objSomeA (which was "objSomeC[nIndex].objSomeA=new CSomeA[10];" delete [] objSomeC (which was objSomeC=new CSomec[10];) still i am getting memory leak; please help me regrads:rose: anju
If you are just doing: delete []objSomec->objSomeA delete []objSomec then you are missing out deleting the other 9 'new CSomeA's. That is, you allocate 10 CSomec's, and for each of these, you allocate 10 CSomeA's - you need to delete these 10 as well, the delete[] will correctly delete the 10 CSomeCs, but it wont delete the 10 CSomeA's that are embedded in each CSomeC. To do this, you should add a destructor to CSomeC that has the same loop as above, but calls delete[] objSomeC[nIndex].objSomeA
-
for(int nIndex=0;nIndex<10;nIndex++)
{
delete [] objSomeC[nIndex].objSomeA; // =new CSomeA[10];
}
delete [] objSomeC;If you want to do it at the object's destruction, you might use this variant:
class CMainOne
{public:
class CSomeA
{
public:
int nXA;
int nYA;
};class CSomeC
{
public:
~CSomeC()
{
delete [] objSomeA;
}
int nXC;
int nYC;
CSomeA *objSomeA;
};CMainOne();
~CMainOne()
{
delete [] objSomeC;
}
CSomeC * objSomeC;};//Class CMainOne
//In MainOne.cpp
CMainOne::CMainOne()
{
objSomeC=new CSomeC[10];for(int nIndex=0;nIndex<10;nIndex++)
{
objSomeC[nIndex].objSomeA=new CSomeA[10];
}
}with the usual checkins i've omitted for brevity. rechi