所以我有一个指向指针数组的指针!
int **matrixPtr;
matrixPtr = new int*[5];
for(i=0; i<5; ++i){
matrixPtr[i]= new int[5];
}
我想知道这是否是释放记忆的正确方法!
for(i=0; i<5; ++i){
delete [] matrixPtr[i];
}
delete [] matrixPtr;
谢谢!
答案 0 :(得分:6)
没问题。这是正确的! 您按照分配的相反顺序解除分配! 我甚至认为还有另一种方法可以做到这一点。
答案 1 :(得分:2)
是和否。 是,如果你必须像你一样手动分配内存,这是手动释放内存的正确方法。
但是没有,你应该避免手动分配和释放内存。如果你坚持使用C ++ 03而没有任何智能指针,你应该使用向量向量。在C ++ 11中,您有更多选项,即智能指针和std::array
,后者只有在编译时知道内部或外部维度的大小或两者都知道。在C ++ 14中,std::dynarray
也可以成为一种选择。