这里我声明一个指针的数组,然后从类print()
调用A
方法
A *ptr1[10];
ptr1[0]= new A;
ptr1[0]->print();
上面工作正常,但是当我尝试删除它时显示断言失败错误
delete[] ptr1;
我正在使用Visual Studio 2010
错误详情:
答案 0 :(得分:3)
ptr1
是一个指向A的指针数组。由于你没有通过new
分配ptr1本身,所以你不应该delete
它。
ptr1[0]
是指向您分配的A的指针。所以你只需要做delete ptr1[0]
。
答案 1 :(得分:1)
好的方法:
#define SIZE 10
A *ptr1[SIZE];
// allocate and do print
for(int i = 0; i < SIZE; i++)
{
ptr1[i]= new A();
ptr1[i]->print();
}
// deletion
for(int j = 0; j < SIZE; j++)
{
if(ptr1[j] != NULL)
{
delete ptr1[j];
ptr1[j] = NULL;
}
}