ホームページ >バックエンド開発 >C++ >Cプログラムのメモリ配置

Cプログラムのメモリ配置

WBOY
WBOY転載
2023-08-26 22:29:111273ブラウズ

C プログラムのメモリ配置は次のとおりです。レベルは非常に少ないです。それらは次のとおりです。

  • スタック セグメント
  • ヒープ セグメント
  • テキスト セグメント
  • データ セグメント

Cプログラムのメモリ配置

ここで、これらの部品の機能を見てみましょう。

#Sr.No セクションと説明1#23#4データ#データ セグメントはさらに 2 つの部分に分割できます。
スタックプロセス スタックには、メソッド/関数パラメータ、戻りアドレス、ローカル変数などの一時データが含まれます。自動変数や関数パラメータに割り当てられるメモリ領域です。関数呼び出し実行時のリターンアドレスも格納します。スタックは、LIFO (後入れ先出し) メカニズムを使用して、ローカル変数または自動変数、関数パラメータを格納し、次のアドレスまたは戻りアドレスを格納します。戻りアドレスとは、関数の実行完了後に戻るアドレスを指します。このセグメントのサイズは、ローカル変数、関数パラメーター、関数呼び出しによって異なります。セグメントは上位のアドレスから下位のアドレスに増加します。

ヒープこれは、プロセスの実行中に動的に割り当てられるメモリです。これは、動的メモリ ストレージ (malloc() や calloc() 呼び出しなど) に割り当てられたメモリの領域です。セグメント サイズは、ユーザーの割り当てによっても異なります。セグメントは、下位のアドレスから上位のアドレスに成長します。

ここで、いくつかのプログラム例でセグメント (データおよび bss セグメント) サイズがどのように変化するかを確認してみましょう。セグメントサイズはsizeコマンドを実行することで取得できます。

テキストこれは、プログラム カウンタとプロセッサの値で構成されます。 registers コンテンツは現在のアクティビティを表します。 .text 部分で表されます。これにより、命令コードが保存されるメモリ内の領域が定義されます。こちらも固定エリアです。

このセクションには、グローバル変数と静的変数が含まれています。 .data セクションと .bss で表されます。 .data セクションは、プログラムのデータ要素が保存されるメモリ領域を宣言するために使用されます。データ要素が宣言されると、このセクションは展開できず、プログラム全体を通じて静的なままになります。

.bss セクションは、プログラムの後半で宣言されるデータのバッファーを含む静的メモリ セクションでもあります。このバッファ メモリはゼロで埋められます。

Sr.No パーツと説明 1 初期化データ セグメント これは、ターゲット ファイルまたはプログラムの仮想アドレス空間の一部であり、初期化されていない静的変数とグローバル変数で構成されます。未初期化データセグメントは、BSS (Block Started by Symbol) セグメントとも呼ばれます。

2 #Un - 初期化データ セグメント これは読み取りおよび書き込み可能です。変数の値は実行時に変更できます。セグメントのサイズも固定です。

以上がCプログラムのメモリ配置の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。