zoukankan      html  css  js  c++  java
  • _heap_alloc_dbg 崩溃

    这个BUG调了我一整天-。-

    基本原因是,Debug使用了的new调用Release的delete,我还不确定.

    BUG的代码可能如下:

    dll:
    struct Status {
    int iStatus;
    CString str;
    };
    
    void GetStatus (Status* p) { /** do something */; }

    调用代码如下:

    Status st;
    GetStatus (&st);

    就这个简单的,看似没有错误的代码产生了问题。

    st中有个CString,它是个类,析构函数会delete 内存块,它因为在内部会存在 +, =等操作,而DLL是Release的,调试程序是 DEBUG的,于是它+,=了Release版本的new 的内存块,当它析构的时候就有问题了---------

    貌似解释不通啊。

    ------------------

    反正换用DEBUG的DLL就不会有问题了。

    -------------------

    那DLL不是我写的---调死我了。

    和MFC联系得太紧密,而且CString 在VC6和VC8的实现方式是不一样的----。它就决定了它只能用VC6进行开发,或者是通过VC6开发一个中间层的DLL才能进行调用---

    --------------

    闷。

  • 相关阅读:
    线程的中断.interrupt
    线程的加入.join()
    Runnable接口
    线程Thread类
    求和、均值
    最值、对应索引位置
    数组、冒泡排序
    获取Methods成员方法类
    获取Field成员变量类
    基于WinDbg的内存泄漏分析
  • 原文地址:https://www.cnblogs.com/lin1270/p/2668927.html
Copyright © 2011-2022 走看看