C プログラムのメモリ配置は次のとおりです。レベルは非常に少ないです。それらは次のとおりです。
ここで、これらの部品の機能を見てみましょう。
セクションと説明 | |
---|---|
スタックプロセス スタックには、メソッド/関数パラメータ、戻りアドレス、ローカル変数などの一時データが含まれます。自動変数や関数パラメータに割り当てられるメモリ領域です。関数呼び出し実行時のリターンアドレスも格納します。スタックは、LIFO (後入れ先出し) メカニズムを使用して、ローカル変数または自動変数、関数パラメータを格納し、次のアドレスまたは戻りアドレスを格納します。戻りアドレスとは、関数の実行完了後に戻るアドレスを指します。このセグメントのサイズは、ローカル変数、関数パラメーター、関数呼び出しによって異なります。セグメントは上位のアドレスから下位のアドレスに増加します。 | |
ヒープこれは、プロセスの実行中に動的に割り当てられるメモリです。これは、動的メモリ ストレージ (malloc() や calloc() 呼び出しなど) に割り当てられたメモリの領域です。セグメント サイズは、ユーザーの割り当てによっても異なります。セグメントは、下位のアドレスから上位のアドレスに成長します。 ここで、いくつかのプログラム例でセグメント (データおよび bss セグメント) サイズがどのように変化するかを確認してみましょう。セグメントサイズはsizeコマンドを実行することで取得できます。 | |
テキストこれは、プログラム カウンタとプロセッサの値で構成されます。 registers コンテンツは現在のアクティビティを表します。 .text 部分で表されます。これにより、命令コードが保存されるメモリ内の領域が定義されます。こちらも固定エリアです。 | |
データ |
このセクションには、グローバル変数と静的変数が含まれています。 .data セクションと .bss で表されます。 .data セクションは、プログラムのデータ要素が保存されるメモリ領域を宣言するために使用されます。データ要素が宣言されると、このセクションは展開できず、プログラム全体を通じて静的なままになります。 .bss セクションは、プログラムの後半で宣言されるデータのバッファーを含む静的メモリ セクションでもあります。このバッファ メモリはゼロで埋められます。 |
以上がCプログラムのメモリ配置の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。