求解释放C++指针内存的问题 程序如下

GetImageData(IplImage* srcImage)
{
int m = srcImage->height;
int n = srcImage->width;
int i, j;

// 分配内存
int **w;
w = new int *[m];
for (i=0; i<m; i++)
{
w[i] = new int[n];
}

// 将imgWROI->二位数组中
CvScalar s;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
s = cvGet2D(srcImage, i, j);
w[i][j] = s.val[0];
}
}

return w;
}
这个在开始就分配了 图像使用内存,但是我在return之前加上delete W,感觉运行完内存还是没释完全,请问如何释放才好,或者还有什么更好的办法来处理指针?

for (int i = 0; i < m; ++ i)
    delete [](w[i]);

追问

这个是在return 后面还是前面释放?还有就是我这个函数在classs1类里面,但是调用在Class2里面 ,还需要在CLASS2里面来释放吗?谢谢

追答

在return 前面.
不用, 用new分配的内存只需要delete一次,也只能delete一次, 对同一new分配的内存delete多次会导致以外的结果

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜