generated at
ヒープ領域
heap
動的なメモリ領域
実行時のメモリ確保に使う
任意のタイミングで割り当てできる
確保、解放は手動でやるか、GCを使うか
スタック領域に比べると少し遅い
あいてる箇所を探したり、一度ポインタを読んでからデータの場所を見に行くから
スタックとは逆に、大規模なデータを置くのに向いている
データを必要とするスコープがはっきりせず、いろいろな場所から参照されるものを置くときや、事前にサイズのわからないファイルを読むこむときなどに適している
新たに割り付けるオブジェクトのサイズを動的に決められる
再帰的なデータ構造を定義し、利用できる
新しく生成したオブジェクトを、親の手続きに返すことができる ref ガベージコレクション本 p.2
関数の戻り値を関数にできる

注意点
ヒープ割り当てを頻繁にやりすぎるとメモリフラグメンテーションの原因になる
ヒープへの確保は失敗することもある
物理的なメモリが足りないときや、アドレス空間に空きがないときなど



GCのある言語では、メモリ上のヒープ領域の上に、独自のヒープを作っているものもある
JavaとかRubyとかはそうなっているらしい
メモリ上のヒープ領域の上に、独自のスタックとヒープを作って使っている