リンカ・ローダと実行形式
C言語のmallocで確保したメモリは、一般にプロセスのどの領域から取られるか。
- A.textセクション
- Bヒープ
- C.rodataセクション
答えと解説を見る
正解:B. ヒープ
ヒープは、プログラムの実行中に必要な大きさのメモリを確保し、不要になったらfreeで返す領域です。確保する大きさや寿命を実行時に決められるのが特徴です。mallocは自分で空き領域を管理し、足りなくなるとOSに頼んで領域を広げます(Linuxではbrkやmmapのシステムコール)。freeし忘れると、使わないメモリが残り続けるメモリリークになります。
- A. .textは機械語の領域で、書き込めません。
- B. 正しい。実行中に必要な分だけ確保する領域です。
- C. .rodataは書き込み禁止の定数の領域です。