vc中内存泄露如何检测

vc中内存泄露怎么检测?写了一个简单的检测内存泄露的控制台程序:#includestdafx.h //formemoryleakcheck

vc中内存泄露怎么检测?
写了一个简单的检测内存泄露的控制台程序:
#include   "stdafx.h "

//for   memory   leak   check
#define   _CRTDBG_MAP_ALLOC   //使生成的内存dump包含内存块分配的具体代码为止
#include <stdlib.h>  
#include <crtdbg.h>  

int   _tmain(int   argc,   _TCHAR*   argv[])
{
_CrtSetDbgFlag(   _CRTDBG_ALLOC_MEM_DF   |   _CRTDBG_LEAK_CHECK_DF   );
int   *q   =   new   int[2];
q[0]   =   1;
q[1]   =   2;

//_CrtDumpMemoryLeaks();
return   0;

}

按F5运行后输出窗口得到有关内存泄露的信息如下:
Detected   memory   leaks!
Dumping   objects   ->
e:\microsoft   visual   studio   .net   2003\vc7\include\crtdbg.h(692)   :   {41}   normal   block   at   0x003710B0,   8   bytes   long.
  Data:   <                 >   01   00   00   00   02   00   00   00  
Object   dump   complete.

请问检测到的内存泄露位置为什么只有e:\microsoft   visual   studio   .net   2003\vc7\include\crtdbg.h(692)处
而网上查找到的其他人按此方法可以定位到用户编写的代码处,如:E:\TestMemLeak\TestDlg.cpp(70)   :   {59}   normal   block   at   0x00881710,   200   bytes   long.
是我什么地方写错了吗?请问怎样做可以将内存泄露的具体位置(如定位到:int   *q   =   new   int[2];处)显示出来

[解决办法]
#ifdef _DEBUG
#ifdef new
#undef new
#endif

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif

int main()
{
int *q = new int[2];
q[0] = 1;
q[1] = 2;


_CrtDumpMemoryLeaks();
return 0;
}


..............
Detected memory leaks!
Dumping objects ->
d:\temp\test\test\test.cpp(15) : {55} normal block at 0x003A2EF0, 8 bytes long.
Data: < > 01 00 00 00 02 00 00 00
Object dump complete.
The program '[1916] test.exe: Native ' has exited with code 0 (0x0).