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そうしないように伝える方法はありますか。との代わり0に、メモリ内の実際の値を確認したい$1$3

4

1 に答える 1

0

gdb は、デバッグ目的でこの値を正確に削除しているようです。

GDB はそのようなことは何もしません。

$1 と $3 の 0 ではなく、メモリ内の実際の値を確認したい

メモリ内の実際の値が表示されています(たまたま 0 です)。

あなたの問題は、デフォルトのヒープ割り当てが「クリーンな」メモリを返すことです。「ダーティ」メモリが表示される可能性が高いのは、その後の再割り当てのみです。

于 2013-04-19T17:49:36.210 に答える