GDBデバッガの場合
(gdb) p &buffer
このコマンドは、バッファ(スタック)の開始位置の内容を印刷するために使用されますか、またはアドレスを印刷するために使用されますか?
内容の場合、住所をどのように印刷しますか?
答え1
タイプによって異なりますbuffer
。
buffer
おそらく、バッファの先頭へのポインタである可能性があります。 Cスタイル宣言はstruct stackElement *buffer;
次のようになります(アスタリスクを参照してください)。この場合:
p &buffer
ポインタ自体が格納されているアドレス(つまり、「バッファアドレスのアドレス」)を印刷します。p buffer
buffer
バッファのアドレスであるポインタ変数の値を印刷する必要があります。p *buffer
バッファの内容を印刷する必要があります。
ポインターではなく構造体型の場合buffer
(例C宣言にstruct stackElement buffer;
アスタリスクがない可能性がある)、次のようにします。
p &buffer
バッファのアドレスである構造体のアドレスを印刷します。p buffer
この構造の内容を印刷します(=スタックの場合は最初のスタック要素である可能性があります)p *buffer
間違いです。