动态分配数组
- C/C++ code
void CSignalProcessDlg::CStringToDouble(CStringArray &DataArr){ int nCount = DataArr.GetSize(); if (nCount%2!=0) { return; } pX = new double[nCount/2+1]; pY = new double[nCount/2+1];
例如我有以上片段的代码,由于pX,pY是要根据传入的DataArr数组大小来决定大小的,所以似乎没有办法在构造函数中为其初始化。
我想问的是这样应该已经造成了内存泄漏了吧。应该在哪里delete[]比较好。我本来想这样:
- C/C++ code
void CSignalProcessDlg::CStringToDouble(CStringArray &DataArr){ int nCount = DataArr.GetSize(); if (nCount%2!=0) { return; } if (pX!=NULL || pY!=NULL) { delete []pX; delete []pY; } pX = new double[nCount/2+1]; pY = new double[nCount/2+1];
但发现不行,程序跑起来的时候,pX和pY就已经有一个内存地址了。所以如何删除这2个动态分配的数组比较好?
或者在函数中声明double *tmp = new double[n];完了删除?
[解决办法]
初始化的时候,指针变量可以设置为 NULL
[解决办法]
初始化时候设置成0咯
或者在析构函数delete咯