Gal*_*age 3 c++ object dynamic-memory-allocation
让我们说吧
class A {
A* array;
public:
A (){
array= new A [4];
}
~A (){
delete array;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们在堆上创建这样的对象,我们如何释放对象
A* object_ptr =new A();
Run Code Online (Sandbox Code Playgroud)
我对释放指向包含另一个指针的对象的指针感到有点困惑.....
调用
delete object_ptr;
Run Code Online (Sandbox Code Playgroud)
后
A* object_ptr =new A();
Run Code Online (Sandbox Code Playgroud)
将调用A指向的析构函数object_ptr.这意味着,如果你搞错了
~A (){
delete array;
}
Run Code Online (Sandbox Code Playgroud)
至
~A (){
delete[] array;
}
Run Code Online (Sandbox Code Playgroud)
你的代码没问题,内部指针正确释放.
但是,你真的应该使用std::vector而不是new[].它会让你的生活变得更轻松.如果你坚持new[],请阅读"三个规则".
| 归档时间: |
|
| 查看次数: |
2737 次 |
| 最近记录: |