c++类的析构函数包含ptr到对象的数组
C++ destructor for class contains array of ptr to objects
例如,如果我们有两个类
class A{
int size;
A** arr;
}
class B{
int size;
A** arr;
}
对于A的构造函数,我写:
A::A(){
this->arr=new A* [20];
}
对于B的构造函数,我写:
B:B(){
this->arr=new A* [20];
}
对于A的析构函数,我写:
A:~A(){
for(int i=0;i<this->size;i++){
delete this->arr[i];
}
delete [] this->arr;
}
对于B的析构函数,我写:
B:~B(){
for(int i=0;i<this->size;i++){
delete this->arr[i];
}
delete [] this->arr;
}
请注意,当我将更多的对象放入arr时,大小将会增长。现在我的问题是,虽然我在测试,没有什么问题,但在主程序返回后,它给了我段错误?
在我看来,这是一个不实现复制构造函数并通过复制传递实例的经典案例。您应该阅读一两篇关于c++中内存管理的文章,或者使用shared_ptr/unique_ptr。
您也应该在构造函数中初始化size。
A::A(){
this->size=20;
this->arr=new A* [20];
}
B
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 唯一 ptr 将所有权移动到包含对象的方法
- 如何传递容器、ptr 和对象不可修改的unique_ptrs容器?
- 在C++中,对象什么时候真正被销毁?delete(ptr)做什么
- 使针对特定托管对象的所有共享 ptr 失效
- ptr<Node> a = 创建对象 < 节点 > ();
- 一个唯一的ptr类如何将它的实例指针传递给它的成员对象
- 从基类ptr的vector对象中擦除
- openv Ptr类.指针对象在调用函数后被删除
- 共享 PTR - C++ 如何使用引用计数管理对象缓存
- 当可以在类对象超出范围之前删除此数据时,类允许访问其数据(通过 ptr/it)是否设计不好
- c++类的析构函数包含ptr到对象的数组
- 如何使用c++ Mat类ptr对象的基本C包装器打印Mat元素?
- 共享Ptr与普通Ptr:声明后的对象创建