zoukankan      html  css  js  c++  java
  • 关于C++项目指针对象未被初始化的问题(0xcdcdcd)

    http://blog.csdn.net/devfun/article/details/6900086

    昨天我试图将一个封装好的模块加入到正在开发的项目中,这个模块不是单独的类,而且对应的声明和实例。
    在处理过程中发现了如下问题。

    由于我自己写代码的时候,在变量初始化的时候总会做

    Object *abc;
    abc = null; //我会初始化一下指针,将其置为空
    abc = new Object[N];

    的操作,所以一直 没有注意到。但新的第三方模块名没有这步操作。

    Object *abc;
    //abc = null; //第三方模块不会有置空这一步。
    abc = new Object[N];

    于是当new地址的时候,总会报错,我跟过去abc的地址总为0xcdcdcd。

    去网上搜,发现这个0xcdcdcd是表示未被初始化的地址,为一个非法地址,必须置空。于是我就很困惑,因为第三方模块并没有地方置空,但在其实例上可以正常运行,于是我就怀疑可能是该实例在初始化模块所属类的时候,将其申请成静态的,于是同为跟代码,最后发现该模块所属类的new通过operator new重写了new方法,这样在每次申请的时候就会有个固定的空间用于存放数据。

    这样儿做的好处是同时也可以检测内存大小~

  • 相关阅读:
    Splunk数据处理
    使用http://start.spring.io/ 生成工程
    SpringBoot和SpringCloud区别
    Spring Cloud
    Spring Boot
    Splunk大数据分析经验分享
    Splunk和ELK深度对比
    Git 教程
    Docker 教程
    STL中的unique和unique_copy函数
  • 原文地址:https://www.cnblogs.com/eustoma/p/5791333.html
Copyright © 2011-2022 走看看