定义好一个CByteArray变量,作为DLL函数中的参数执行DLL函数,在运行出该变量作用域时进行析构的时候,会弹出错误:debug assertion failed!
expression: _CrtIsValidHeepPointer(pUserData)我调试发现,这是CByteArray中m_pData指针析构时出现,各位大大,帮我看看为什么会出现这个问题,该怎么解决呢?

解决方案 »

  1.   

    http://www.codeguru.com/forum/showthread.php?t=326283
    看下这个 , 看对你有帮助没
      

  2.   

    很明显,跨模块分配内存了。在DLL中做过CByteArray的增加或者删除?这样就会导致内存的分配了。
      

  3.   

    内存分配好像和模块无关吧,只有资源才是跨模块有问题。你确认你的DLL和你的主程序是同一个版本的编译器编的?
      

  4.   

    要牢记内存从哪个模块分配,就由哪个模块释放。CByteArray、CString什么的不适合做接口参数或返回值。