64,637
社区成员
发帖
与我相关
我的任务
分享
int * duck[3] = {new Duck(), new SuperDuck1(), new SuperDuck2()};
// delete [] duck; // 出错啦,原因是? 我理解是delete[]会将一段连续的内存删除,所以对这种情况同存溢出。
for(int i = 0; i < 3; ++i){ // 这样删除就正常。
delete duck[i];
}
Duck** duck = new (Duck*)[3];
duck[0] = new Duck();
duck[1] = new SuperDuck1();
duck[2] new SuperDuck2();
for(int i = 0; i < 3; ++i){//是先删除duck[i]吗
delete duck[i];
}
delete[] duck;
Duck* duck[3] = {new Duck(), new SuperDuck1(), new SuperDuck2()};
//int * duck[3] = {new Duck(), new SuperDuck1(), new SuperDuck2()};
//duck本身不是在堆上分配的,不等delete
// delete [] duck;
for(int i = 0; i < 3; ++i){ // 这样删除就正常。
delete duck[i];
}