为什么我写了个dll在其中调用create new出一个对象,调用destroy delete它,但老是有这样的错误 ,Debug Error!,Damage:after Normal block(#59) at 0x01631a60!!!!我明明已经正确无误的删除对象了啊
高手帮忙啊 !!!!!

解决方案 »

  1.   

    DLL方
    加AFX_MANAGE_STATE(AfxGetStaticModuleState());试试!比如下面的函数这样加!
    CMyFind
    {
        CString *FuncA()
        {
            AFX_MANAGE_STATE(AfxGetStaticModuleState());//        CString * pStr = new CString("aaa");
            return pStr;
        }
    }
      

  2.   

    导出函数中,如果要返回地址的,一定要加AFX_MANAGE_STATE(AfxGetStaticModuleState());
    否则地址是相对地址(dll模块),而不是exe的地址
      

  3.   

    看看这个帖子,是否有帮助http://community.csdn.net/Expert/topic/3750/3750278.xml?temp=.2951319
      

  4.   

    我也碰到过这个错误,最后查出来是写内存写过头了,换句话说就是分配内存时只分配了1个字节,写的时候写入了两个或更多。建议重点检查 memcpy、memset 函数的使用,看长度参数是不是比分配的内存长度要大。
      

  5.   

    内存删除有问题啊,你最好检查所有分配的内存,包括构造里头的,用Boundscheck检查一下也可以