如果debug调试的时候中断总是停在析构函数的delete[] p上,那可能
有两种情况:
1.调用析构函数的这个对象没有被分配空间,先找到调用调用析构函数出错的这个对象,
然后查看它是否被分配了空间,有可能你觉得你分配了,但实际上没有。
2.你给这个动态对象只分配了N个单元的空间,但是却给超过N-1的下标的单元赋了值,也就是越界了,假设你一共赋值了N + 2个单元,这时,
当执行delete[]p这条语句时,delete就会释放N+ 2个单元,所以多释放了3个单元的空间当然会程序崩溃了。
例如:
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int *array = new int [10]; //只给array分配了10个空间 7 for (int i = 0; i < 12; i++) //却给array的12个空间赋了值 8 array[i] = i; 9 10 delete[] array; 11 return 0; 12 13 }