Debugging GDB自动初始化变量 我试图做一个关于C++内存管理的例子。我想让人们知道,记忆中总有一些东西(即使你没有在里面写任何东西)

Debugging GDB自动初始化变量 我试图做一个关于C++内存管理的例子。我想让人们知道,记忆中总有一些东西(即使你没有在里面写任何东西),debugging,memory,gdb,Debugging,Memory,Gdb,我的问题是,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<<

我的问题是,
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) 
挂起处的主断点1(argc=1,argv=0x7fffffffe8f8)。cpp:6 6整数*测试=新整数; (gdb)n 8*试验=10; (gdb)p*测试 $1 = 0 (gdb)n 10删除测试; (gdb)p*测试 $2 = 10 (gdb)n 12标准::cout gdb似乎正是为了调试purpouse而删除了这个值

GDB并没有这样做

我希望看到内存中的实际值,而不是$1和$3的0

您正在内存中看到实际值(正好是0)


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

谢谢,但我不确定如何从g++获得脏内存