• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ヒープメモリについて)

ヒープメモリについて

このQ&Aのポイント
  • ヒープ領域の限界値設定について知りたい
  • Visual C++のHeapAllocの場合、ヒープ領域は個別のプログラムに割り当てられるのか
  • プログラムの起動時にヒープ領域とプログラム・スタック用領域の確保方法について知りたい

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>ヒープ領域はOSが一緒くたに管理している領域から、個別のプログラムに割り当てられるのでしょうか? 物理メモリのことを言っていますか? Windowsなら、それぞれのプロセスは独自の「メモリ空間」を割り当てられます。 読み込んだプログラム本体や、共有するDLL、スタック領域、ヒープ領域などなどがこのメモリ空間内にマッピングされることになります。 # ちなみに実行ファイル(EXEファイルやDLL)には、読み込んだときに効率よく配置できるようベースアドレスが設定されています。 # ベースアドレスに読み込めた場合はアドレスの再割り当ては不要ですが、そのメモリブロックが使用中の場合は # 別のアドレスに割り当てし直されるので、ちょっつとだけロード時の処理が増えます。 # Dependency Walker等で確認できます。 ということで…概ね >(1)プログラム・スタック用領域・ヒープ領域が容易されるものなのか こちらになるかと。 起動時、最初にHeapAlloc()して取得したメモリアドレスを表示するプログラムを作成して多重起動させてみると判るかと。 ついでにインスタンスハンドルも表示してみたり。 # Win32ではモジュールのロードアドレス…のようです。 # 実行ファイルに記録されているロードアドレスはリンカで指定できます。 細かいところはWindowsの内部動作とか解説している書籍などを当たって下さい。

nico60000
質問者

お礼

レスありがとうございます。 どうも私がイメージしていたものは間違いであったようですね。 教わりましたことを参考に、調べてみます。

すると、全ての回答が全文表示されます。

関連するQ&A