typedef struct
{
double x;
double y;} DXFPOINT;
typedef struct
{
DXFPOINT* point;
int n;} DXFPOLYLINE;
typedef CArray <DXFPOLYLINE, DXFPOLYLINE&> CDxfPolyLineArray;
程序中:
void Func1(CDxfPolyLineArray& pLineArray)
{
DXFPOLYLINE Line;
Line.point=new DXFPOINT[5];
pLineArray.Add(Line);
}void Func2()
{
CDxfPolyLineArray pLineArray;
Func1(pLineArray);
}
这样,Func2函数结束后,会有内存泄漏
我想让pLineArray销毁时候,Line.point自动释放申请的内存空间,请问该如何解决?不能在Func2中释放,要在Func1中释放,或者在前面定义中释放。
开始本来想将DXFPOLYLINE做成class的,然后利用析构函数来释放,后来发现这样有问题。
{
double x;
double y;} DXFPOINT;
typedef struct
{
DXFPOINT* point;
int n;} DXFPOLYLINE;
typedef CArray <DXFPOLYLINE, DXFPOLYLINE&> CDxfPolyLineArray;
程序中:
void Func1(CDxfPolyLineArray& pLineArray)
{
DXFPOLYLINE Line;
Line.point=new DXFPOINT[5];
pLineArray.Add(Line);
}void Func2()
{
CDxfPolyLineArray pLineArray;
Func1(pLineArray);
}
这样,Func2函数结束后,会有内存泄漏
我想让pLineArray销毁时候,Line.point自动释放申请的内存空间,请问该如何解决?不能在Func2中释放,要在Func1中释放,或者在前面定义中释放。
开始本来想将DXFPOLYLINE做成class的,然后利用析构函数来释放,后来发现这样有问题。
自己写ConstructElements和DestructElements吧
for(int nIndex = 0; nIndex < pLineArray.GetSize(); ++nIndex)
{
delete [] pLineArray[nIndex].point;
}方法二:在DXFPOLYLINE的析构函数中
delete [] point;
{
DXFPOINT* point;
int n;
DXFPOLYLINE()
{
n=0;
point = NULL;
}
~DXFPOINT()
{
if (point)
delete[] point;
}
};
{
DXFPOINT* point;
int n;
_DXF()
{
point = NULL;
n = 0;
}
~_DXF()
{
if(point != NULL)
{
delete point;
point = NULL;
}
}
} DXFPOLYLINE;