0

我正在尝试做一个关于 C++ 中内存管理的示例。我想向人们展示,记忆中总有一些东西(即使你没有在里面写任何东西)

我的问题是,gdb出于调试目的,似乎完全删除了这些值......

Breakpoint 1, main (argc=1, argv=0x7fffffffe8f8) at dangling.cpp:6
6       int *test=new int;
(gdb) n
8       *test=10;
(gdb) p *test
$1 = 0
(gdb) n
10      delete test;
(gdb) p *test
$2 = 10
(gdb) n
12      std::cout<<*test<<std::endl;
(gdb) p *test
$3 = 0
(gdb) 

有没有办法告诉gdb不要那样做。我想看到内存中的真正价值,而不是0of$1$3

4

1 回答 1

0

gdb 似乎完全删除了这些值以进行调试。

GDB 没有做任何此类事情。

我想看到内存中的真正价值,而不是 $1 和 $3 的 0

正在看到内存中的实际值(恰好为 0)。

您的问题是默认堆分配会返回“干净”内存。只有在随后的重新分配中,您可能会看到“脏”内存。

于 2013-04-19T17:49:36.210 回答