【发布时间】:2015-02-11 16:35:02
【问题描述】:
我制作了一个动态的对象数组。当我调用 delete[] 时,程序崩溃并停止响应。但它的行为很奇怪:调用所有析构函数并崩溃。看看这段代码和输出。分配所有数组的所有内存。
//main file
#include "myobject.h"
int size;
myObject *foo;
//some operations to estimate size
foo = new myObject[size];
//some operations with myObject
std::cout<<"size: "<<size<<"\n";
std::cout<<"Deleting object\n";
size=0;
delete [] foo;
下一个文件:
//myobject.h
class myObject
{
public:
int number;
Object1 ob1[64]
Object2 *ob2;
myObject(){ };
~myObject()
{
std::cout<<"delete "<<number<<"\n";
delete [] ob1;
delete [] ob2;
};
}
还有输出:
size: 11
Deleting object
delete 10
delete 9
delete 8
delete 7
delete 6
delete 5
delete 4
delete 3
delete 2
delete 1
delete 0
然后它崩溃并停止响应。
【问题讨论】:
-
ob2是如何分配的? -
为什么要在析构函数中删除ob1?
标签: c++ class object crash delete-operator