具体情况是这样的,我有应用程序,调用了一个DLL。在DLL中有一个函数,返回一个字符串指针,使用完了之后在应用程序中释放这个字符串指针。
在应用程序和DLL用同一个版本的VS编译的时候,调用是没有问题的。
当我用VS2010编译的应用程序去调用用VS2013编译的DLL时,在释放这个指针的时候应用程序就崩溃了。
有大婶知道这是怎么回事吗?
具体情况是这样的,我有应用程序,调用了一个DLL。在DLL中有一个函数,返回一个字符串指针,使用完了之后在应用程序中释放这个字符串指针。
在应用程序和DLL用同一个版本的VS编译的时候,调用是没有问题的。
当我用VS2010编译的应用程序去调用用VS2013编译的DLL时,在释放这个指针的时候应用程序就崩溃了。
有大婶知道这是怎么回事吗?
这个是因为不同的编译器版本,他们的VC运行时库等实现会有区别,共享堆会有实现的区别,所以你不能在不同版本编译器的DLL之间的指针进行跨模块的释放。
这样会产生不可预期的错误。这个是不被允许的。