私は以下のパズルを解く必要があります。それは言う:パズル - どのアドレスがグローバル/ローカル/ヒープ変数に属するかを調べる
変数のアドレスを出力するUbuntu Linux Cプログラムがあります。
v1: 0xa156128
v2: 0xff97410c
v3: 0xf750e34b
v4: 0x804a0c0
私は、プログラムが共有メモリを使用せず、少なくとも1つの変数がヒープ変数であることを知っています。これらの変数のどれがglobal
/local
/heap
であるか。
これはすべて入手可能な情報です。このパズルを解決するためのあらゆるアイディアに本当に関心があります。
のコメントを読んだ後、編集:
私はランタイムを見れば - そこに保管機関リンク(http://lambda.uta.edu/cse5317/notes/node33.html)以来v1
がヒープ変数であること、v2
とv3
が最大のアドレスを持つため、ローカル変数であることを思わそれはスタックと静的データの間にあり、ローカル変数のように実行時にスタック上で宣言されることのないグローバル変数であり、バイナリの.dataセクションではv4
です。
私は間違っているかもしれませんが、私はこの質問が理にかなっているという強い感情を持っています。 –
おそらく関連しています:http://stackoverflow.com/q/1966920/1679849 –
リンク@ squeamishossifrageありがとう。私は私の質問を編集しました。 – WillLur