取消分配2D对象数组

时间:2016-11-21 15:05:18

标签: c++ pointers memory-management memory-leaks

我仍然是C ++指针的新手,如果有人可以帮我解决这个问题,我会感觉很棒:

while( true)
{

//some input

//if input is QUIT it quits the program

// some code to calculate how many House objects we need

 House** houses = new House *[numOfHouses];


//some more code 


}

在这种情况下,有人可以指导我如何解除分配房屋(2D阵列)吗?

如果我的循环运行一次并且用户在第二次迭代中输入QUIT,那么我在valgrind检查时会丢失8个字节。

如果我的循环运行两次并且用户在第三次曝气中进入QUIT,我会在valgrind检查中丢失16个字节。

由于

1 个答案:

答案 0 :(得分:1)

由于您通过new在堆上分配数组,因此解除分配的正确方法是通过

House** houses = new House *[numOfHouses];
// Cleanup
delete[] houses;

无论如何,因为你在每次循环迭代时用新的分配覆盖指针,你就会出现内存泄漏。

在循环内部完成或使用智能指针后释放内存。