64,651
社区成员
发帖
与我相关
我的任务
分享
nt n = 100;
Obj* a = new Obj[n];
for(int i = 0;i < n;i++)
{
delete Obj[i];
}
楼主,这种写法有问题,首先,你new出来的是一个对象数组,在一般情况下,new操作所分配的内存都会大于用户需要的,也就是说会额外分配一块内存,这块内存用来标记用户需要的内存的大小,有没分配等相关信息
在delete的时候,会根据这块额外的信息去删除,并修改相关选项
你上面的内容,每次delete obj[i],但是编译器总共就一块额外内存,用来存储相关信息,你这样做,就是相当于有n块相关内存,每次delete的时候,都会根据那一小块来释放内存,并修改相关信息,所以这样会出错...