Lak*_*mie 0 c++ pointers memory-management
考虑以下情况:
Class** array = new Class*[8];
array[1] = new Class(1,2);
Run Code Online (Sandbox Code Playgroud)
只是做" delete[ ] array足够"或者我应该在前者之前加上" delete array[1]".我对内存管理并不完全满意.
每次调用时new[],都必须调用delete[]指向解除分配的指针.每次打电话new,你都要打电话delete.
在你的情况下,你打new两次电话.array[1]包含指向分配的类的指针new,因此必须将其解除分配delete.并且array是指向分配的数组的指针new[],因此必须将其释放delete[].
当然,你可以通过简单地声明这样的数组来节省你自己的头痛:
Class array[8];
array[1] = Class(1,2);
Run Code Online (Sandbox Code Playgroud)
没有动态内存分配意味着无需调用delete.
或使用std::vector:
std::vector<Class> array(8);
array[1] = Class(1,2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2244 次 |
| 最近记录: |