在微软视像C++(VS 2008/2010)中,使用一些标准模版图书馆集装箱,如:set或 st: 您的矢量将随此而发生:
#include <set>
#include <stdlib.h>
#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
printf("I m leaking
");
std::set<int> s;
_CrtDumpMemoryLeaks();
return 0;
}
在你管理该方案之后,你取得了一些成果:
Detected memory leaks!
Dumping objects ->
{209} normal block at 0x005E9C68, 20 bytes long.
Data: <h ^ h ^ h ^ > 68 9C 5E 00 68 9C 5E 00 68 9C 5E 00 CD CD CD CD
{208} normal block at 0x005E9C20, 8 bytes long.
Data: < ; > F8 FE 3B 00 00 00 00 00
Object dump complete.
这里的解决办法是: 仅附上此定义:
int _tmain(int argc, _TCHAR* argv[])
{
printf("I m not leaking any more
");
{
std::set<int> s;
}
_CrtDumpMemoryLeaks();
return 0;
}
这是一种奇怪的行为,我很想知道,这是否是微软公司或一些STL-Problem公司的一个Bug? 我猜测这起事件。 如果可能有人在A/63/1-System上试图这样做,那将令人感兴趣。