[visual-studio]在 Visual Studio 中的内存泄漏

标签: Visual-Studio
发布时间: 2014/3/1 3:58:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有内存泄漏与 Visual Studio Pro 2012 年 3 月使用 std::thread 这个简单的代码:

#include <thread>

void f(){}

int main(){
    std::thread t(f);
    t.join();
    _CrtDumpMemoryLeaks();
    return 0;}

Win32 输出:

Detected memory leaks!
Dumping objects ->
{293} normal block at 0x00A89520, 44 bytes long.
 Data: <                > 01 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 
Object dump complete.

x 64 输出:

Detected memory leaks!
Dumping objects ->
{293} normal block at 0x00000000003FCB00, 72 bytes long.
 Data: <                > 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
Object dump complete.

如果我评的主要方法的两个前行,我有没有内存泄漏。

从哪里来?

编辑: 泄漏是还在这里跟的代码:

#include <thread>

void f(){}

int main(){
    {
        std::thread t(f);
        t.join();
    }
    _CrtDumpMemoryLeaks();
    return 0;}

解决方法 1:

CrtDumpMemoryLeaks 是极不可靠。它可能是标准库当您第一次使用 std::thread 时故意泄漏了一次性分配。要找出是否有真正的内存泄漏,请试试这个:

for (int i = 0; i < LIMIT; ++i) {
  std::thread t(f); t.join();
}
_CrtDumpMemoryLeaks();

然后看看是否泄漏大小则增加当你增加的限制。如果不是,你也没事。

官方微信
官方QQ群
31647020