セクションとは
セクションとは
プログラムはメモリに配置されて実行される
メモリ上にはプログラム内の「機械語」や「変数」「定数」など、各種用途ごとに分かれて配置される。
その単位のことをセクションという。
良く使われるセクションの名前
.bssセクション:グローバル変数の格納領域
.bss領域は「全て0初期化されているべし」とC言語の規約で規定されている。
プログラム実行前に、領域を確保して丸ごと0初期化される。
格納されるグローバル変数
初期値 なし の グローバル変数
初期値が 0 の グローバル変数
初期値 なし の 静的(=static)なローカル変数
初期値が 0 の 静的(=static)なローカル変数
.dataセクション:初期値有りのグローバル変数、静的ローカル変数の格納領域
.textセクション:関数などの格納領域
ヒープセクション(Heap Section):
ヒープセクションは、動的に割り当てられるメモリ領域です。プログラム実行中に、ヒープセクションはmalloc()やnewなどの関数や演算子を使用して動的にメモリを割り当てるために使用されます。ヒープセクションは、明示的な解放命令(free()やdelete)がない限り、プログラムの実行が終了するまでメモリを保持します。
BSSセクション(Block Started by Symbol):
BSSセクションは、初期化されていない静的変数やグローバル変数を格納するための領域です。
BSSセクションに含まれる変数は、プログラムが開始される前にゼロまたはデフォルトの値で初期化されます。
テキストセクション(Text Section):
テキストセクションは、実行可能なプログラムのコードを格納する領域です。テキストセクションには、プログラムの命令や関数のバイトコードが含まれます。テキストセクションは通常、読み取り専用のメモリ領域であり、実行時に変更されることはありません。
データセクション(Data Section):
データセクションは、初期化された静的変数やグローバル変数を格納する領域です。データセクションに含まれる変数は、明示的に初期化された値を持ちます。データセクションは、プログラムがロードされるときにメモリに読み込まれ、実行中に変更される可能性があります。
スタックセクション(Stack Section):
スタックセクションは、関数呼び出しやローカル変数など、プログラムの実行中に自動的に割り当てられるメモリ領域です。スタックセクションは、プログラムが関数を呼び出すたびにスタックフレームが作成され、関数のパラメータやローカル変数がスタックに格納されます。関数が終了すると、スタックフレームが解放され、メモリは再利用されます。