2016-09-03 15 views
-2

Here言う:Cの異なるメモリセクションのアドレス範囲を取得する方法は?

Cプログラムの典型的なメモリ表現は、次のセクションで構成されています。

  1. テキストセグメント
  2. 初期化されたデータ・セグメント
  3. 初期化されていないデータセグメント
  4. スタック
  5. ヒープ

しかし、どのように各セクションのアドレスと終了アドレスを開始取得するには?

+0

gcc(およびLD)このリンクはあなたが知る必要があるすべてを伝える必要がありますについては

?テキストセグメントはあなたのコードです。初期化されたデータセグメントは、すべての初期化された_グローバル_変数の初期値で埋められます。初期化されていないデータセグメントには、初期値なしのすべての_global_変数に十分な領域が割り当てられます。スタックとヒープは動的に管理されます(スタックはシステムによって管理され、ヒープはmalloc()/ free()や基礎となるbrk()/ cbrk()などのメモリ割り当てによって行われます) –

+0

これは高度に定義された実装です。 OSやコンパイラを識別する必要はありませんが、OSやコンパイラを指定する必要があることに気付かずにいたとしても、あなたが思うどんな理由であれこれを必要とする、それは間違った理由でなければならない。 –

答えて

0

各メモリセグメントの開始アドレスと終了アドレスを取得する簡単な方法は、リンカコマンドファイルを組み込むことです。このファイルには、各メモリセグメントの先頭と末尾にラベルを配置します。この情報が必要な理由

https://www.math.utah.edu/docs/info/ld_3.html

関連する問題