VS2005 Debug版,dll /MTd,exe /MDd的潜在bug

简介: VS2005 Debug版,dll /MTd,exe /MDd的潜在bug

VS2005 Debug版,dll /MTd,exe /MDd的潜在bug

dll中:

void DoStr(std::string& str)
{
 str += "12345678901234";
}

exe中

void CtestexeDlg::OnBnClickedButton1()
{
 std::string str = "1"; 
 DoStr(str);
}

运行正常。修改str的初始值为"12",就崩溃了。

原因在于:

VS2005的std::string 当数据较短时,不从堆中分配内存;较长时,才从堆中分配内存。

跨组件(dll或exe)分配、释放内存只有当双方都是MD或MDd时才不崩溃。

相关文章
遭遇 kapjazy.dll,yhpri.dll,WinSys64.Sys,nwiztlbu.exe,myplayer.com 等1
遭遇 kapjazy.dll,yhpri.dll,WinSys64.Sys,nwiztlbu.exe,myplayer.com 等1
|
8月前
|
Linux 编译器
一起来认识Linux中的 BUILD_BUG_ON 宏
一起来认识Linux中的 BUILD_BUG_ON 宏
VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
|
Windows
[笔记]Windows判断文件是可执行文件exe/dll文件/驱动文件sys
[笔记]Windows判断文件是可执行文件exe/dll文件/驱动文件sys
调试实战 —— dll 加载失败之 Debug Release 争锋篇
调试实战 —— dll 加载失败之 Debug Release 争锋篇
|
Linux 编译器 Shell
【Linux】【编译】编译及Makefile的调试手段和技巧
【Linux】【编译】编译及Makefile的调试手段和技巧
687 0
|
缓存 Linux 网络安全
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(2)(★firecat推荐★)
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(★firecat推荐★)
845 0
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(2)(★firecat推荐★)
|
网络协议 开发工具 Windows
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(1)(★firecat推荐★)
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(★firecat推荐★)
541 0
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(1)(★firecat推荐★)
|
Android开发
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
169 0