【C++】Dll的Release版本和Debug版本不能混用
问题描述
在Release模式下,程序可以正常运行,在Debug模式下,程序报内存错误,可能会出现以下两种错误
- Invalid address specified to RtlFreeHeap
- exited with code -1073740940
原因分析
std::string和std::vector,在release和debug下的实现方式是不同的,内存使用情况也不一致
因此,如果dll使用了std库,则必须保证dll和exe是使用相同规则编译出来的
如果debug版本的exe,使用了release版本的dll,则有可能导致内存错误
解决方案
- exe使用和dll一样的版本进行编译
- dll使用和exe一样的版本
- 使用静态库替换动态库来编译程序
C语言确实有很多比较麻烦的地方,大家只能靠经验去解决
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
