我想知道指针在调试时包含特定的地址

I want to know pointer holds particular address at the time of debugging

本文关键字:包含特 地址 调试 想知道 指针      更新时间:2023-10-16

我在输出窗口中使用#define _CRTDBG_MAP_ALLOC获得内存转储。

检测到内存泄漏!

转储对象->
{1078301}0x0AB2D840的正常块,48字节长
数据:<2 0 1 4-0 9->32 00 30 00 31 00 34 00 2D 00 30 00 39 00 2D 00

{975444}0x08D21138处的正常块,36字节长
数据:<==pa>A4 3D C0 08 B0 3D C0 8 01 00 00 70 61 BE 08

{975443}0x0CE96610处的正常块,32字节长
数据:<,X\pa>2C 58 C0 08 5C 90 BF 08 01 00 00 70 61 BE 08

{975438}0x0CE6B1D8处的正常块,32字节长
数据:50 90 BF 08 5C 90 BF 08 01 00 00 08 E3 D1 08

{736753}0x0CEAA878处的正常块,16384字节长
数据:<//>D8 2楼D2 08 D8 2层D2 08 03 00 00 00 00 00

{736744}0x0CEA88388192字节长的正常块
数据:<8 8>38 0B E2 0C 38 88 EA 0C 01 00 00 01 00 00 00

{736738}0x0CEA47F8处的正常块,16384字节长
数据:<G>00 00 00 F8 47 EA 0C 03 00 00 00 00 00

{736729}0x0CE105A88192字节长的正常块
数据:<(>28 14 D1 08 A8 05 E1 0C 01 00 00 00 CD CD CD CD

{736723}0x0CEA07B8处的正常块,16384字节长
数据:<G 8>F8 47 EA 0C 38 88 EA 0C 03 00 00 00 00 00

{736713}0x0CE1E4408192字节长的正常块
数据:<@@>A8 05 E1 0C 40 E4 E1 0C 01 00 00 00 CD CD CD

{736707}0x0CE1A400处的正常块,16384字节长
数据:<>B8 07 EA 0C B8 07 EA0C 03 00 00 00 00 00

{736698}0x0CE36B18192字节长的正常块
数据:<@k>40 E4 E1 0C 18 6B E3 0C 01 00 00 00 CD CD CD{736692}0x0CE163C0处的正常块,16384字节长
数据:<>00 A4 E1 0C 00 A4 E1 0C 03 00 00 00 00 00

{736682}0x0CE442308192字节长的正常块
数据:<k 0B>18 6B E3 0C 30 42 E4 0C 01 00 00 00 CD CD CD{736676}0x0CE3E7F8处的正常块,16384字节长
数据:<c c>C0 63 E1 0C C0 63 E10C 03 00 00 00 00 00

{736666}0x0CE4B6F08192字节长的正常块
数据:<0B>30 42 E4 0C F0 B6 E4 0C 01 00 00 00 CD CD CD CD

{736660}0x0CE3A7B8处的正常块,16384字节长
数据:<>F8 E7 E3 0C F8 E7 E30C 03 00 00 00 00 00

{736650}0x0CE47388处的正常块,8192字节长
数据:<s>F0 B6 E4 0C 88 73 E4 0C 01 00 00 00 CD CD CD{736644}0x0CE0C568处的正常块,16384字节长
数据:<>B8 A7 E3 0C B8 A70 E3 0C 03 00 00 00 00 00

{736634}0x0CE20B38192字节长的正常块
数据:<s 8>88 73 E4 0C 38 0B E2 0C 01 00 00 00 CD CD CD{736628}0x0CE23B70处的正常块,16384字节长
数据:68 C5 E0 0C 68 C5 E00 0C 03 00 00 00 00 00

{663741}0x0CDB6EF0的正常块,60字节长
数据:50 F2 BF 08 24 6F C0 08 01 00 00 30 75 00 00

{1923}0x08D20DE8的正常块,8字节长
数据:<@]d>40 5D BE 08 64 C0 D1 08

{1922}0x08D22E10的正常块,56字节长
数据:70 5C BE 08 00 00 00 CD CD CD E8 0D D2 08

{1900}0x08D27018的正常块,16384字节长
数据:<>F0 E2 D1 08 F0 E2 D108 03 00 00 00 00 00

{1894}0x08D22FD8的正常块,16384字节长
数据:70 3B E2 0C 70 3B E2 0C 03 00 00 00 00 00

{1883}0x08D22900的正常块,144字节长
数据:43 00 3A 00 5C 00 55 00 73 00 65 00 72 00 73 00

对象转储完成。

现在debegger碰到了断点。在监视窗口中,在调试时,我在名称栏中添加{,,msvcr100d.dll}_crtBreakAlloc,并在值栏中添加内存位置736723,这是上面提到的转储中的内存块号。这种泄漏发生在循环的函数中。

当我继续调试时,它在监视窗口中输入的内存块编号处中断,见图1在窗户上按一下见图2_CrtDbgBreak保持0x69595280。注意发生内存泄漏的

现在,我如何知道在调试时保存特定地址操作的指针。

提前感谢Avinash V

程序已经在那里中断了,所以你应该在Visual studio中的调用堆栈窗口中找到源代码,然后你就可以找到调用内存分配函数的源代码,这就是你想要的。

当您使用分配号来跟踪内存泄漏时,如果程序没有在以前的条件下运行,分配号可能会更改。请参阅:使用CRT库查找内存泄漏