MD和MT混用的后果

简介: MD和MT混用的后果

dll操作stl对象时(如:std::stringstd::vector)崩溃,原因:在不同堆中申请、释放内存。如果一个dllstl为主要类库,这种情况必定发生。主要分如下几类:

1,导出函数出参使用了stl对象。

2,导出了类,此类有公有成员。可以通过笨办法解决,不设置公有变量,通过SetGet函数操作成员,工作量巨大。

 

1VC6 Debug测试崩溃的情况。

被调用方(dll)

调用方(exe)

是否崩溃

MDd

MDd

正常

MD

正常

MTd

崩溃

MT

崩溃

MD

MDd

正常

MD

MD

正常

MD

MTd

崩溃

MD

MT

崩溃

MTd

MTd

崩溃

Mt

崩溃

MDd

崩溃

MD

崩溃

MT

MTd

崩溃

Mt

崩溃

MDd

崩溃

MD

崩溃

结论:除了双方都是MDMDd,必定崩溃。

 

2VC6 Release版,不考虑MDdMTd

被调用方(dll)

调用方(exe)

是否崩溃

MD

MD

正常

MT

MD

正常

MD

MT

正常

MT

MT

正常

结论:双方都是Release版,不会崩溃。

 

3,开发环境VC6,被调用方Release版,调用方Debug版。

这种情况很常见,比如:使用第三方组件,第三方组件往往没Debug版,所以调试时,只能用Release版。

被调用方(dll)

调用方(exe)

是否崩溃

MD

MTd

崩溃

MDd,

崩溃

MT

MTd

崩溃

MDd

崩溃

结论:必定崩溃。

 

4,VC8(VS2005)Debug

被调用方(dll)

调用方(exe)

是否崩溃

MDd

MDd

正常

MDd

MTd

崩溃

MTd

MTd

崩溃

MTd

MDd

崩溃

5,VC8(VS2005)Release

被调用方(dll)

调用方(exe)

是否崩溃

MT

MT

崩溃

MT

MD

崩溃

MD

MT

崩溃

MD

MD

正常

6VC8(VS2005)被调用方Release,调用方Debug

被调用方(dll)

调用方(exe)

是否崩溃

MD

MD

崩溃

无需实验

 

终上所述:

Debug版都是MDdRelease版都是MD,才不会崩溃。


相关文章
|
Java
SpringBoot中的拦截器 interceptor
SpringBoot中的拦截器 interceptor
222 0
|
Web App开发 前端开发 JavaScript
React 之 requestAnimationFrame 执行机制探索
React 之 requestAnimationFrame 执行机制探索
603 0
|
10月前
|
网络协议 Linux 网络安全
微软工程师偷偷在用!这款SSH工具让Windows操控CentOS比Mac还优雅!
远程登录Linux服务器是管理和维护服务器的重要手段,尤其在远程办公、云服务管理等场景中不可或缺。通过工具如XShell,用户可以方便地进行远程管理。SSH协议确保了数据传输的安全性,命令行界面提高了操作效率。配置XShell连接CentOS时,需确保Linux系统开启sshd服务和22端口,并正确设置主机地址、用户名和密码。此外,调整字体和配色方案可优化使用体验,解决中文显示问题。
455 21
微软工程师偷偷在用!这款SSH工具让Windows操控CentOS比Mac还优雅!
|
Java
如何在程序中抛出 EOFException 异常
EOFException 是 Java 中的一种异常,通常用于表示文件已结束但程序仍尝试读取数据的情况。本文将介绍如何在程序中手动抛出 EOFException 异常。
395 2
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
1105 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
Java 数据格式
Java“EOFException”解决
Java中的“EOFException”通常在读取文件或网络流时遇到意外的文件结束符时抛出。解决方法包括检查输入源是否为空、确保数据格式正确以及增加异常处理逻辑。
1511 3
|
人工智能 算法 JavaScript
无界 SaaS AI 生态大模型:技术在中国,链接全世界
无界 SaaS AI 生态大模型涵盖前端用户界面、后端服务器逻辑、数据库设计、API 接口开发及区块链技术应用。本文提供一个简化框架,介绍技术栈选择、核心功能模块(用户管理、商城、数据确权、链接力、算力算法、AI 生态大模型、全球化支持)及后端示例代码,帮助将商业模式转化为代码。
解决Java中的EOFException异常的方法
解决Java中的EOFException异常的方法
|
运维 Java API
nacos常见问题之nacos 2.2.3报错如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。