如何阻止这种内存泄漏?
How to block this memory leak?
我已将我的程序内存泄漏缩小到这些动态创建的内容之一。泄漏非常非常小,不会造成任何问题,但最好修复,代码如下:
//allocate row memory:
dynamicNodeArray = new int *[r];
//allocate column memory:
for(int i = 0; i < r; i++)
{
dynamicNodeArray[i] = new int[c];
}
//...
//allocate memory for nodes (array of structs):
node* nodes = new node[r*c];
//...
//clean up:
for(int i = 0; i < r; i++)
{
delete dynamicNodeArray[i];
}
delete dynamicNodeArray;
free(nodes);
delete nodes;
delete dynamicNodeArray;
应该是 delete [] dynamicNodeArray;
,因为你用 new[]
分配了它。
也永远不要在你用 new()
或 new[]
分配的东西上调用 free()
。
我已将我的程序内存泄漏缩小到这些动态创建的内容之一。泄漏非常非常小,不会造成任何问题,但最好修复,代码如下:
//allocate row memory:
dynamicNodeArray = new int *[r];
//allocate column memory:
for(int i = 0; i < r; i++)
{
dynamicNodeArray[i] = new int[c];
}
//...
//allocate memory for nodes (array of structs):
node* nodes = new node[r*c];
//...
//clean up:
for(int i = 0; i < r; i++)
{
delete dynamicNodeArray[i];
}
delete dynamicNodeArray;
free(nodes);
delete nodes;
delete dynamicNodeArray;
应该是 delete [] dynamicNodeArray;
,因为你用 new[]
分配了它。
也永远不要在你用 new()
或 new[]
分配的东西上调用 free()
。