如果debug调试的时候中断总是停在析构函数的delete[] p上

如果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 }

 

posted @ 2018-11-25 14:21  Lucky小黄人^_^  阅读(807)  评论(0编辑  收藏  举报