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时才不崩溃。
posted on   闻缺陷则喜何志丹  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~



点击右上角即可分享
微信分享提示