首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

动态分配数组,该如何解决

2012-03-12 
动态分配数组C/C++ codevoid CSignalProcessDlg::CStringToDouble(CStringArray &DataArr){int nCount D

动态分配数组

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咯

热点排行