2016-09-02 7 views
0

gdbを使用して、割り当てられたメモリのすべての配列要素を出力したいとします。なぜgdbが配列要素の印刷に失敗したのですか?

int main() { 
    int* p=(int*)malloc(7*sizeof(int)); 
    for(size_t j=0;j<7;++j) { 
     p[j]=j; 
    } 
    return 0; 
} 

だから私はそれを開始するために使用GDB、-g3でこのプログラムをコンパイルし、私は予想設定したブレーク

> print [email protected] 

は1-7を出力しますが、実際の出力は

ました
$1 = {0x6160b0, 0x5, 0xff00000000, 0x615c60, 0x615c80, 0x615c20, 0x615c40} 

なぜ私の期待!=実際の結果、何か私のプログラムに間違いがありますか?

答えて

1

GDB Manualは言う:

'@」の左オペランドが所望の配列の最初の要素であり、個々のオブジェクトであるべきです。右のオペランドは、配列の望ましい長さでなければなりません。結果は、要素あなたが

print [email protected] 

を言うのであれば、あなたが7つのポインタの配列を印刷するGDBを教えて左引数

のタイプのすべてのある配列値です。

何が必要です:

print *[email protected] 
関連する問題