news 2026/7/28 18:47:08

编程 MD(d)、MT(d)编译选项的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
编程 MD(d)、MT(d)编译选项的区别

1.各个选项代表的含义

编译选项

包含

静态链接的lib

说明

/MD

_MT、_DLL

MSVCRT.lib

多线程、Release、DLL版本的运行时库 ---只能用于Release版本

/MDd

_DEBUG、_MT、_DLL

MSVCRTD.lib

多线程、Debug、DLL版本的运行时库 ----只能用于Debug版本

/MT

_MT

LIBCMT.lib

多线程、Release版本的运行时库

/MTd

_DEBUG、_MT

LIBCMTD.lib

多线程、Debug版本的运行时库

简单的说:

(1)/MD,表示运行时库由操作系统提供一个DLL,程序里不集成。

(2)/MT,表示运行时库由程序集成,程序不再需要操作系统提供运行时库DLL。

/MT是"multithread, static version" 意思是多线程静态的版本,定义了它后,编译器把LIBCMT.lib安置到OBJ文件中,让链接器使用LIBCMT.lib 处理外部符号。

/MD是"multithread- and DLL-specific version",意思是多线程DLL版本,定义了它后,编译器把MSVCRT.lib安置到OBJ文件中,它连接到DLL的方式是静态链接,实际上工作的库是MSVCR80.DLL。

即:

静态运行时库:LIBCMT.lib

动态运行时库:MSVCRT.lib +MSVCR80.DLL

2./MD、/MT的选择

1、为什么选择/MD,不选/MT?

(1)程序就不需要静态链接运行时库,可以减小软件的大小;

(2)所有的模块都采用/MD,使用的是同一个堆,不存在A堆申请,B堆释放的问题。

2、为什么选择/MT,不选择/MD?

(1)有些系统可能没有程序所需要版本的运行时库,程序必须把运行时库静态链接上。

3、多个模块,必须选择相同类型的运行时库,不要混合使用。

3.选择/MT需要解决的堆空间释放问题

不同的模块各自有一份C运行时库代码,各个C运行库会有各自的堆,导致了各个模块会有各自的堆。如果在A堆中申请空间,到B堆中释放就会有崩溃,在模块A申请的空间,必须在模块A中释放。

附件(下载地址:http://files.cnblogs.com/cswuyg/Test_MD_and_MT.rar)的DLL以及DLLUser代码,以STL的string为例,通过修改编译选项验证了这个问题。(string在赋值的时候需要释放掉原来的空间,然后再申请新的空间存储新的内容。)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 18:43:57

拒绝API套壳!可视化配置落地企业级业务AI智能体

当前企业AI落地普遍陷入“demo亮眼、上线崩盘”的困境,多数低代码平台仅靠外挂LLM API实现浅层AI能力,存在业务割裂、可控性差、无法深度适配政企合规场景等核心痛点。 一、行业真相:90%企业AI落地,都死在“伪智能化” 大模型商业…

作者头像 李华
网站建设 2026/7/28 18:42:52

数据投毒检测避坑:后门触发器的隐蔽性与检测盲点

数据投毒检测避坑:后门触发器的隐蔽性与检测盲点 一、当后门藏到看不见:投毒检测的乐观与失守 数据投毒是大模型供应链里隐蔽的风险。攻击者不必攻破训练流程,只要在训练数据里埋下少量带触发器的样本,就能让模型在特定输入下输出…

作者头像 李华
网站建设 2026/7/28 18:41:39

【第一章06】MQTT报文验证-Wireshark工具抓取通讯数据

结合MQTT报文结构知识,使用Wireshark抓取并验证MQTT通讯数据,可以按照从环境配置到报文校验的完整流程落地,覆盖常规TCP MQTT和WebSocket MQTT两种场景,具体操作如下: 一、前置环境准备 工具与权限配置‌ 安装3.6.0以…

作者头像 李华
网站建设 2026/7/28 18:32:35

PAT A1078 Hashing (25 分) 哈希 平方探查法

题目大意&#xff1a;给出一个Hash表的大小MSize(<10^4)&#xff0c;以及N个数&#xff0c;用平方探查法&#xff08;只考虑正增量&#xff09;依次插入&#xff0c;输出这N个数所在的位置。如果MSize不是素数&#xff0c;则令它等于大于它的最小素数。 主要考察平方探查法。…

作者头像 李华
网站建设 2026/7/28 18:31:11

MCP vs Agent:最清晰区分

MCP vs Agent&#xff1a;最清晰区分一句话先行&#xff1a; Agent 是一套「会自主思考、自主做决策的智能程序」&#xff1b; MCP 是一套「通信协议标准」&#xff0c;用来给 Agent / LLM 连接外部资源和工具。1. 核心定位对比&#x1f9e0; Agent&#xff08;智能体&#xff…

作者头像 李华
网站建设 2026/7/28 18:31:04

LangChain → AgentExecutor → LangGraph 的演进脉络

LangGraph 构建于 LangChain 之上&#xff0c;能极大简化智能体&#xff08;Agent&#xff09;与智能体运行时&#xff08;Agent Runtime&#xff09;的开发工作。 那么智能体和智能体运行时究竟指什么&#xff1f; 在 LangChain 中&#xff0c;我们对智能体的定义是&#xff1…

作者头像 李华