你看过vs2019和vs2022里的相关选项了没?我是看过了才回帖子的。
现在只有四个:/MT、 /MTd、 /MD、 /MDd
VC6时代是有/ML、/MLd的,这两个选项是从VS2005 SP1移除的,
也就是说谁要是现在还想用单线程CRT,那必须用老古董的VS版本才行。
The following features were new in Visual C++ 2005 Service Pack 1:
/ML and /MLd compiler options have been removed. Visual C++ no longer supports single-threaded, statically linked CRT library support.
https://learn.microsoft.com/en-us/cpp/porting/visual-cpp-what-s-new-2003-through-2015?view=msvc-170
单线程CRT里的malloc()在调用HeapAlloc()时指定了HEAP_NO_SERIALIZE标志的,也是为了效率,disable掉HeapAlloc内部的锁。
这是以前分析某个产品多线程调用那个组策略dll的崩溃时注意到的。
【 在 poggy 的大作中提到: 】
:
: 晕, 你这c++学的真是堪忧
: 楼主的说法,标准一点应该叫,运行时库分单线程和多线程。
: ...................
--
修改:z16166 FROM 114.240.244.*
FROM 114.240.244.*