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时才不崩溃。

相关文章
VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
|
9月前
|
Linux 编译器
一起来认识Linux中的 BUILD_BUG_ON 宏
一起来认识Linux中的 BUILD_BUG_ON 宏
WinCE6.0中Romimage.exe的BUG
WinCE6.0的Romimage.exe依然存在BUG,跟WinCE5.0一样。当新建的工程和PB的安装目录不在同一分区时就不能正确生成nb0文件。本以为WinCE6.0已经解决这个问题,不想饱汉不知饿汉饥,他们似乎没有发现这个BUG,也就不可能修复了。
765 0
|
Windows
Qt Creator编译项目,报错,error: LNK1158: 无法运行“rc.exe”
Qt Creator编译项目,报错,error: LNK1158: 无法运行“rc.exe”
1066 0
|
移动开发 Android开发 Perl
Android系统移植与调试之------->MTK 标准编译命令
命令格式:./maketek [option] [project] [action] [modules]Option:   -t ,-tee :输出log信息到当前终端   -o , -opt=…… : 编译附加条件,一般使用-opt=TARGET_BUILD...
1372 0
|
编译器 C++
深入探究VC —— 编译器cl.exe(2)
这一章节介绍的全是VC编译器选项,option参数是cl.exe的编译选项,是cl.exe命令行参数中最复杂、也是最常用的。下面介绍一些常用的编译选项: 1、代码生成有关 这些选项将影响编译完成后生成的机器代码:     2、调试有关 与调试有关的编译选项如下图,/Z7、/Zi、/ZI这...
1259 0
|
Windows
深入探究VC —— 编译器cl.exe(1)
cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件。cl.exe命令行参数形式如下: CL (option...) file... [option | file]... [lib...] [@command-file] [/link link-opt...] 各命令行参数的意义如下 : 1、option 命令行中的"option"是指一个或多个编译选项。
1131 0
遭遇 kapjazy.dll,yhpri.dll,WinSys64.Sys,nwiztlbu.exe,myplayer.com 等1
遭遇 kapjazy.dll,yhpri.dll,WinSys64.Sys,nwiztlbu.exe,myplayer.com 等1
|
Windows
Windbg内核调试之四: Dump文件分析
Dump 文件分析很大程度上就是分析蓝屏产生的原因。这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等)。说它是比较严重,是因为毕竟Windows还提供了dump文件给用户分析,至少能比较容易的找到错误的原因。
1665 0

热门文章

最新文章