C++ 这是微软的一大缺陷吗;std::thread的s实现? \define\u CRTDBG\u MAP\u ALLOC #包括 #包括 #包括 使用名称空间std; void Hello() {} int main() { { std::thread(Hello).join(); } _CrtDumpMemoryLeaks(); }

C++ 这是微软的一大缺陷吗;std::thread的s实现? \define\u CRTDBG\u MAP\u ALLOC #包括 #包括 #包括 使用名称空间std; void Hello() {} int main() { { std::thread(Hello).join(); } _CrtDumpMemoryLeaks(); },c++,visual-c++,memory-leaks,c++11,stdthread,C++,Visual C++,Memory Leaks,C++11,Stdthread,输出窗口显示:(VC++编译器版本:2012年11月CTP) 线程0x5ab8已退出,代码为0(0x0)。 检测到内存泄漏! 转储对象-> 0x002A2E00处的{261}正常块,44字节长。 数据:01 00 00 00 00 00 00 00 对象转储完成。 线程0x5abc已退出,代码为0(0x0)。 线程0x5ab4已退出,代码为0(0x0)。 程序“[0x5A94]C++11.exe”已退出,代码为0(0x0)。 查看以下MS Connect条目: 将其设置为for循环,并查看泄漏是

输出窗口显示:(VC++编译器版本:2012年11月CTP)

线程0x5ab8已退出,代码为0(0x0)。
检测到内存泄漏!
转储对象->
0x002A2E00处的{261}正常块,44字节长。
数据:<>01 00 00 00 00 00 00 00
对象转储完成。
线程0x5abc已退出,代码为0(0x0)。
线程0x5ab4已退出,代码为0(0x0)。
程序“[0x5A94]C++11.exe”已退出,代码为0(0x0)。

查看以下MS Connect条目:


将其设置为for循环,并查看泄漏是否在增加。可能是一些延迟初始化的数据结构,只初始化了一次,似乎是“泄漏”。也许这会有帮助:?@Aschratt您应该将该注释转化为答案。泄漏检测是不完美的,尤其是对于特定于实现的运行时拥有的对象,它知道稍后会进行清理。是的,难道我们都不喜欢微软的开发人员把他们的电子邮件地址留给每个人使用吗。斯蒂芬总是回答,如果消息不是典型的女士讨厌的话。
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <thread>

using namespace std;

void Hello()
{}

int main()
{
    {
        std::thread(Hello).join();
    }    

    _CrtDumpMemoryLeaks();
}
The thread 0x5ab8 has exited with code 0 (0x0).
Detected memory leaks!
Dumping objects ->
{261} normal block at 0x002A2E00, 44 bytes long.
 Data: <                > 01 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 
Object dump complete.
The thread 0x5abc has exited with code 0 (0x0).
The thread 0x5ab4 has exited with code 0 (0x0).
The program '[0x5A94] C++11.exe' has exited with code 0 (0x0).