zoukankan      html  css  js  c++  java
  • 如果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 }
  • 相关阅读:
    Delphi 获取不重复随机数《LceMeaning》
    轻松一下
    MS SQL字段类型详解《转》
    Go语言优势与劣势
    go语言特点
    初始go语言
    django 短链接改成长连接
    extjs [1]
    Supervisor安装与配置
    InfluxDB命令使用
  • 原文地址:https://www.cnblogs.com/hi3254014978/p/10015529.html
Copyright © 2011-2022 走看看