ヒープ領域
heap
実行時に任意のサイズでメモリ確保できる
確保、解放は手動でやるか、GCを使うか
スコープを越えて生きられる
スタック領域に比べると少し遅い
あいてる箇所を探したり、一度ポインタを読んでからデータの場所を見に行くから
可変サイズのデータなど、コンパイル時にサイズが決まらないものは(スタックを使えないので)ヒープを使うことになる
注意点
メモリフラグメンテーション
ヒープ割り当てを頻繁にやりすぎるとメモリフラグメンテーションの原因になる
ヒープへの確保は失敗することもある
物理的なメモリが足りないときや、アドレス空間に空きがないときなど
メモリリーク
GCのある言語では、メモリ上のヒープ領域の上に、独自のヒープを作っているものもある
https://keens.github.io/blog/2017/04/30/memoritosutakkutohi_puto/
JavaとかRubyとかはそうなっているらしい
メモリ上のヒープ領域の上に、独自のスタックとヒープを作って使っている