有关DLL中申请的内存在外部释放的有关问题
有关DLL中申请的内存在外部释放的问题。
具体情况是这样的,我有一个应用程序,调用了一个动态链接的DLL。在DLL中有一个函数,返回一个字符串指针,使用完了之后在应用程序中释放这个字符串指针。
在应用程序和DLL用同一个版本的VS编译的时候,调用是没有问题的。
当我用VS2010编译的应用程序去调用用VS2013编译的DLL时,在释放这个指针的时候应用程序就崩溃了。
有大婶知道这是怎么回事吗?
------解决思路----------------------
dll另外提供一个释放的接口吧。
------解决思路----------------------
DLL 和 你的主程序不是一次编译出来的,就有可能他们用的 malloc/free , new/delete 不是同一套。当 malloc/free , new/delete 不匹配的时候,就会出现释放出错的问题。
你可以在 DLL 里提供一个释放内存的函数,然后调用 dll 的函数释放 dll 里生成的指针,保证 malloc/free , new/delete 是匹配的。
------解决思路----------------------
不要在dll内申请在dll外释放,尽量在dll内部释放,或采用静态库的方式
具体情况是这样的,我有一个应用程序,调用了一个动态链接的DLL。在DLL中有一个函数,返回一个字符串指针,使用完了之后在应用程序中释放这个字符串指针。
在应用程序和DLL用同一个版本的VS编译的时候,调用是没有问题的。
当我用VS2010编译的应用程序去调用用VS2013编译的DLL时,在释放这个指针的时候应用程序就崩溃了。
有大婶知道这是怎么回事吗?
------解决思路----------------------
dll另外提供一个释放的接口吧。
------解决思路----------------------
DLL 和 你的主程序不是一次编译出来的,就有可能他们用的 malloc/free , new/delete 不是同一套。当 malloc/free , new/delete 不匹配的时候,就会出现释放出错的问题。
你可以在 DLL 里提供一个释放内存的函数,然后调用 dll 的函数释放 dll 里生成的指针,保证 malloc/free , new/delete 是匹配的。
------解决思路----------------------
不要在dll内申请在dll外释放,尽量在dll内部释放,或采用静态库的方式