Asynchronous 无边界的\u缓冲区、\u CRTSETDBGSFLAG和内存泄漏

Asynchronous 无边界的\u缓冲区、\u CRTSETDBGSFLAG和内存泄漏,asynchronous,visual-c++-2010,agents,Asynchronous,Visual C++ 2010,Agents,我正在尝试使用其中一个新特性—异步代理库。我刚刚加了一个 无界缓冲区m_myDataBuffer; 到我的C++类,没有更多-没有代理运行。 要在我的应用程序中启用内存泄漏检测,我使用: #ifdef _DEBUG _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #endif 但在关闭我的应用程序窗口(我使用的是简单的Win 32 GUI应用程序)后,Visual Studio显示了大量内存泄漏: Det

我正在尝试使用其中一个新特性—异步代理库。我刚刚加了一个

无界缓冲区m_myDataBuffer; 到我的C++类,没有更多-没有代理运行。 要在我的应用程序中启用内存泄漏检测,我使用:

#ifdef _DEBUG
    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
但在关闭我的应用程序窗口(我使用的是简单的Win 32 GUI应用程序)后,Visual Studio显示了大量内存泄漏:

Detected memory leaks!

Dumping objects ->
{261} normal block at 0x007C4EB8, 288 bytes long.
 Data: <              5 > 00 00 02 00 02 00 00 00 10 02 00 00 10 B1 35 00 
{260} normal block at 0x007C4E70, 12 bytes long.
 Data: <        HM| > 00 00 00 00 00 02 00 00 48 4D 7C 00 
{259} normal block at 0x007C4E18, 28 bytes long.
 Data: <                > 00 00 00 00 CD CD CD CD 00 00 00 00 00 00 00 00 
{258} normal block at 0x0035AEF0, 28 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
{257} normal block at 0x007C4D48, 144 bytes long.
 Data: <   U            > A4 C2 F4 55 CD CD CD CD 00 00 00 00 00 00 00 00 
{255} normal block at 0x007C0AB8, 16388 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
{254} normal block at 0x0035CF30, 12 bytes long.
 Data: <          | > 01 10 00 00 01 00 00 00 B8 0A 7C 00 
{253} normal block at 0x007C0978, 256 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
{252} normal block at 0x007C08A8, 148 bytes long.
 Data: < ! U            > 8C 21 F5 55 01 00 00 00 00 00 00 00 00 00 00 00 
{251} normal block at 0x0035FEB8, 256 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
{250} normal block at 0x0035FDE8, 148 bytes long.
 Data: < ! U            > 8C 21 F5 55 01 00 00 00 00 00 00 00 00 00 00 00 
{249} normal block at 0x007C0068, 2048 bytes long.
 Data: <  5             > A0 FD 35 00 CD CD CD CD CD CD CD CD CD CD CD CD 
{248} normal block at 0x0035FDA0, 12 bytes long.
 Data: <` 5         > 60 F9 35 00 00 00 00 00 FF FF FF FF 
{247} normal block at 0x0035F960, 1024 bytes long.
 Data: <  5   |         > E8 FD 35 00 A8 08 7C 00 00 00 00 00 00 00 00 00 
{246} normal block at 0x0035F8B8, 104 bytes long.
 Data: <  5   5         > 10 B1 35 00 98 D0 35 00 02 00 00 00 02 00 00 00 
{245} normal block at 0x0035F078, 2048 bytes long.
 Data: <0 5             > 30 F0 35 00 CD CD CD CD CD CD CD CD CD CD CD CD 
{244} normal block at 0x0035F030, 12 bytes long.
 Data: <  5         > F0 EB 35 00 00 00 00 00 FF FF FF FF 
{243} normal block at 0x0035EBF0, 1024 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
{242} normal block at 0x0035E3B0, 2048 bytes long.
 Data: <h 5             > 68 E3 35 00 CD CD CD CD CD CD CD CD CD CD CD CD 
{241} normal block at 0x0035E368, 12 bytes long.
 Data: <( 5         > 28 DF 35 00 00 00 00 00 FF FF FF FF 
{240} normal block at 0x0035DF28, 1024 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
{239} normal block at 0x0035DE08, 224 bytes long.
 Data: <   U      5     > 98 13 F5 55 00 00 00 00 0C DE 35 00 00 00 00 00 
{238} normal block at 0x0035D5C8, 2048 bytes long.
 Data: <  5             > 80 D5 35 00 CD CD CD CD CD CD CD CD CD CD CD CD 
{237} normal block at 0x0035D580, 12 bytes long.
 Data: <@ 5         > 40 D1 35 00 00 00 00 00 FF FF FF FF 
{236} normal block at 0x0035D140, 1024 bytes long.
 Data: <  5             > 08 DE 35 00 00 00 00 00 00 00 00 00 00 00 00 00 
{235} normal block at 0x0035D098, 104 bytes long.
 Data: <  5   5   5     > 10 B1 35 00 B8 F8 35 00 08 DE 35 00 CD CD CD CD 
{234} normal block at 0x0035D008, 80 bytes long.
 Data: <,  U\  U        > 2C C4 F4 55 5C C1 F4 55 00 00 00 00 00 00 00 00 
{233} normal block at 0x0035CF78, 80 bytes long.
 Data: <,  U\  U        > 2C C4 F4 55 5C C1 F4 55 00 00 00 00 00 00 00 00 
{231} normal block at 0x0035CEF0, 4 bytes long.
 Data: <    > 00 00 00 00 
{230} normal block at 0x0035CE58, 88 bytes long.
 Data: <            | 5 > 01 00 00 00 00 00 00 00 01 00 00 00 7C CF 35 00 
{229} normal block at 0x0035C300, 44 bytes long.
 Data: <                > 03 00 00 00 02 00 00 00 02 00 00 00 00 00 00 00 
{228} normal block at 0x0035C5E0, 2104 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
{227} normal block at 0x0035C4D0, 208 bytes long.
 Data: <l  U      5 0 5 > 6C 0A F5 55 00 00 00 00 E8 C0 35 00 30 C1 35 00 
{225} normal block at 0x0035C2C0, 4 bytes long.
 Data: <  5 > B8 F8 35 00 
{224} normal block at 0x0035C280, 4 bytes long.
 Data: <  5 > 98 D0 35 00 
{223} normal block at 0x0035C200, 64 bytes long.
 Data: <  5             > 10 C5 35 00 CD CD CD CD CD CD CD CD CD CD CD CD 
{222} normal block at 0x0035C488, 8 bytes long.
 Data: <        > 00 00 00 00 01 00 00 00 
{221} normal block at 0x0035C418, 48 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 
{220} normal block at 0x0035C3D8, 4 bytes long.
 Data: <    > 00 00 00 00 
{219} normal block at 0x0035C378, 36 bytes long.
 Data: <                > 03 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 
{217} normal block at 0x0035C130, 148 bytes long.
 Data: <l  U            > 6C D7 F4 55 02 00 00 00 01 00 00 00 10 00 00 00 
{216} normal block at 0x0035C0E8, 8 bytes long.
 Data: <   U  5 > C0 11 F5 55 10 B1 35 00 
{215} normal block at 0x0035B8A8, 2048 bytes long.
 Data: <  5             > 00 AE 35 00 CD CD CD CD CD CD CD CD CD CD CD CD 
{214} normal block at 0x0035AE00, 12 bytes long.
 Data: <h 5         > 68 B4 35 00 00 00 00 00 FF FF FF FF 
{213} normal block at 0x0035B468, 1024 bytes long.
 Data: < N|             > 18 4E 7C 00 00 00 00 00 00 00 00 00 00 00 00 00 
{212} normal block at 0x0035AF50, 36 bytes long.
 Data: <                > 00 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 
{211} normal block at 0x0035B110, 368 bytes long.
 Data: <   UP 5         > CC 1D F5 55 50 AF 35 00 00 00 00 00 00 00 00 00 
Object dump complete.
无边界缓冲区有什么特别之处吗?我必须做些什么才能释放它,即使它没有被使用?或者我需要以某种特殊的方式设置_crtsetdbglag?_crtsetdbgsflag是内存泄漏的原因,还是在这种情况下,它以某种方式创建了错误检测,并且没有真正的内存泄漏?我错过了什么

我100%确信这些泄漏不是来自我的代码,因为我也有

#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define new new(_NORMAL_BLOCK,__FILE__, __LINE__)
\ifdef\u调试
#定义\u CRTDBG\u映射\u ALLOC
#包括
#包括
#定义新的(正常块、文件、线)

在我的stdafx.h中,代码中的内存泄漏有文件名和行。但是无界缓冲区的那些没有这样的信息,所以我猜这意味着它们来自代理库。

好的,我发现“CRTDBG\u LEAK\u CHECK\u DF flag”会自动调用“CrtDumpMemoryLeaks();在申请结束时。但这似乎不是在最后发生的。我删除了_CRTDBG_LEAK_CHECK_DF并在main()的末尾调用了_crtdumpmomeryleaks(),现在它正确地报告了内存泄漏。。。我希望如此

微软MSDN中也有关于PPL库内存泄漏的错误报告,希望他们能尽快修复

_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define new new(_NORMAL_BLOCK,__FILE__, __LINE__)