debug 输出:
Detected memory leaks!
Dumping objects ->
strcore.cpp(118) : {252} normal block at 0x01952E40, 127 bytes long.
 Data: <    9   r   E:\P> 01 00 00 00 39 00 00 00 72 00 00 00 45 3A 5C 50 
strcore.cpp(118) : {251} normal block at 0x01952EF0, 255 bytes long.
 Data: <            'a2.> 01 00 00 00 E6 00 00 00 F2 00 00 00 27 61 32 2E 
strcore.cpp(118) : {250} normal block at 0x01951B10, 43 bytes long.
 Data: <            Micr> 01 00 00 00 0F 00 00 00 1E 00 00 00 4D 69 63 72 
oledisp2.cpp(385) : {249} client block at 0x01951A30, subtype 0, 36 bytes long.
a COleDispatchException object at $01951A30, 36 bytes long
Object dump complete.
The thread 0x65C has exited with code 0 (0x0).
The program 'C:\MAPTOOL03C\試験項目自動抽出\Src\vc\DataEdit\DataEdit\Debug\DataEdit.exe' has exited with code 0 (0x0).
帮忙啊!

解决方案 »

  1.   

    一,你看看是否有缓冲区溢出二,在你的线程或函数内部加如::CoInitialize(NULL); 
    和::CoUninitialize()
      

  2.   

    1、看看你的堆栈有没有溢出
    2、你设置的缓冲区是不是足够大比如在定义数组的时候是不是越界了
    3、如果在程序中使用了new,也应该有相同数目的 delete,否则也会产生内存泄漏
    4、你在程序中是否使用了GDI资源,比如CBitmap.CPen........这些资源用完之后一定要释放
      

  3.   

    内存泄漏有两种,一是你自己new了东东又没有delete,第二是MFC new 了,但是程序出现异常没有delete,这就需要catch异常,自己delete.
    通常是第一种,自己查一下有没有忘记delete自己new的东东?
      

  4.   

    我估计可能是你在传数据时发送和接收两个Buffer指针分配的内存大小空间不一样
      

  5.   

    你查看一下你delete时候是否判断了对象是否为空。
    我的没有判断,就出现了内存泄漏,原来以为我已经delete了,问题不应该出现在这里的,哪知问题就是在这里
      

  6.   

    我记起来了,我也有过你这样的错误,我当时是new了一个字符串发送给窗口,接收端去delete,但如果发了后程序退出没有收到这个消息就会出这个错,这个可以通过全局变量来解决。
    还有一种可能是使用了数据库的SQL语句,如果出了异常,这个SQL字符串不会被释放,需要使用如下的宏
    TRY
    {SQL}
    CATCH(CDBException, e)
    END_CATCH
      

  7.   

    你用boundschecker查的话比较准确,应该可以定位到具体出问题的代码
      

  8.   

    我绕过去了,现在没出,我是咋也找不到泄漏的原因。我的确用了com的东西,我也有初始化,卸载了CoInitialize(NULL); 和::CoUninitialize()
      

  9.   

    有一点可以确定的东西,你可以跟踪进这个错误,它是在CString类的内核文件中strcore.cpp,然后你再看看是哪里调用了出错的函数。
      

  10.   

    可以的我试过,首先找到在strcore.cpp的第118行设置断点,然后将中断条件设为它分配的空间字节数等于你泄漏的字节数,然后就等它断吧