c – 删除指针数组的正确方法
发布时间:2020-12-16 10:23:30 所属栏目:百科 来源:网络整理
导读:我有一个指针数组(我通过调用new ptr * [size]创建).所有这些指针都指向一个也放在堆上的对象. 删除数组和所有新的ptr的正确方法是什么? 这就是我现在所做的: for (int i = 0; i size; i++) delete array[i];delete[] array; // Not sure since this doubl
我有一个指针数组(我通过调用new ptr * [size]创建).所有这些指针都指向一个也放在堆上的对象.
删除数组和所有新的ptr的正确方法是什么? 这就是我现在所做的: for (int i = 0; i < size; i++) delete array[i]; delete[] array; // Not sure since this double deletes array[0] 这是否符合我的想法? 谢谢 解决方法
分配有new的每个指针都会获得相应的删除.用new []分配的每个指针都得到一个相应的delete [].这真的是你需要知道的.当然,当你有一个包含动态分配指针的动态分配数组时,释放必须以相反的顺序发生.
因此,正确的成语将是…… int main() { int **container = new int*[n]; for(int i = 0; i < n; ++i) container[i] = new int[size]; // ... and to deallocate... for(int i = 0; i < n; ++i) delete [] container[i]; delete [] container; } 然后当然我说“停止这样做”并建议你使用std :: array或std :: vector(模板类型将是unique_ptr< int>). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |