我仍然是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个字节。
由于
答案 0 :(得分:1)
由于您通过new
在堆上分配数组,因此解除分配的正确方法是通过
House** houses = new House *[numOfHouses];
// Cleanup
delete[] houses;
无论如何,因为你在每次循环迭代时用新的分配覆盖指针,你就会出现内存泄漏。
在循环内部完成或使用智能指针后释放内存。