软件架构师何志丹

软件架构师何志丹的理念:尚贤 非命 节用

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时才不崩溃。
阅读更多
个人分类: CC++ stl 逻辑层
上一篇std::string 不能跨dll的一种解决方法
下一篇VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
想对作者说点什么? 我来说一句

判断DLL文件是Debug版或Release版

2011年07月22日 38KB 下载

windows+orbslam2+vs2013

2018年06月07日 146.44MB 下载

VS2005 Debug Runtime DLL

2009年06月17日 899KB 下载

opencv3.20 dll exe

2017年04月27日 36.35MB 下载

U8接口开发 U8Login.dll (Debug版)

2016年12月14日 256KB 下载

Debug.exe和DOSBox合辑

2014年06月26日 1.38MB 下载

没有更多推荐了,返回首页

关闭
关闭