VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别(转载)

转载地址:https://blog.51cto.com/u_15906863/5978136

一种语言的开发环境往往会附带有语言库,这些库就是对操作系统的API的包装,我们也称这些语言库为运行库

对于MSVC的运行库(CRT),按照静态/动态链接,可以分为静态版和动态版;按照调试/发布,可以分为调试版本和发布版本;按照单线程/多线程,可以分为单线程版本和多线程版本(但是目前VS中已不提供单线程版本了)

在调试模式下,使用调试运行库:多线程调试(/MTd)、多线程调试DLL(/MDd)

在发布模式下,使用发布运行库:多线程(/MT)、多线程DLL(/MD)

调试模式下运行库带d,但发布模式不带。调试与发布的区别在于,发布模式省略了程序的调试信息,简单来说就是删除了调试模式下的用于调试的内容,所以一般情况下,发布模式下生成的可执行文件的大小比调试模式下生成的要小

静态链接:多线程(/MT)、多线程调试(/MTd)

动态链接:多线程DLL(/MD)、多线程调试DLL(/MDd)

动态链接为D,静态链接为T。两者的区别在于,静态链接将程序所依赖的运行库集成到了可执行文件中,可执行文件运行时不再需要运行库;动态链接没有把程序所依赖的运行库集成到可执行文件中,可执行文件运行时需要运行库。由于静态链接将程序所依赖的运行库集成到了可执行文件中,一般情况下,生成的可执行文件的大小大于动态链接生成的

对这四种运行库的选在位于VS的项目属性-》C/C+±》代码生成-》运行库:

实例
源码:

#include
using namespace std;int main()
{
cout << “Hello World!” << endl;
system(“pause”);
return 0;
}
1.
2.
3.
4.
5.
6.
7.

(以下实验均在Win10+VS2017下完成)

Win32、debug模式下:

Win32、release模式下:

我们可以发现,在同种模式下,动态链接小于静态链接;在同种链接下,release模式小于debug模式

在x64、debug模式下:

在x64、release模式下:

同种模式和链接下,x64下生成的可执行文件大小大于Win32下生成的

VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别(转载)
https://blog.51cto.com/u_15906863/5978136

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多线程是指在一个程序同时运行多个线程,每个线程执行不同的任务。多线程可以提高程序的效率和响应性。而多线程调试则是在调试过程,针对多线程程序进行调试,以便更好地查找和修复问题。 在多线程调试,我们经常遇到一个问题,就是如何区分是哪个线程在调用某个函数。因为线程函数体是多线程共享的,所以在调试过程很难准确识别是哪个线程在执行。 在使用IntelliJ IDEA进行多线程调试时,可以通过设置断点来调试特定的线程。通过在代码设置断点,然后在调试模式下逐步执行程序,可以观察每个线程的执行情况。可以使用“Threads”窗口查看当前正在执行的线程,并可以选择单独调试某个线程。 另外,多线程调试还涉及到运行库的选择。在调试模式下,可以使用多线程调试运行库(/MTd或/MDd)来编译和运行程序,以便在调试过程更好地跟踪线程的执行。而在发布模式下,可以使用发布运行库(/MT或/MD)来编译和运行程序,以提高程序的性能。 综上所述,多线程是指在一个程序同时运行多个线程,而多线程调试则是在调试过程针对多线程程序进行调试的一种方法,通过设置断点和选择合适的运行库来区分和调试不同的线程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [idea调试多线程.zip](https://download.csdn.net/download/lj_70596/13657576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [VS多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别](https://blog.csdn.net/m0_47472749/article/details/128014448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值