
教えて!goo検索で、
「ヒープ領域の限界値設定」を検索すると出てくる質問内容に対する回答No.2(ベストアンサー)について、
もう少し知りたいです。(私の質問ではないのですが。)
Visual C++のHeapAllocの場合、
ヒープ領域はOSが一緒くたに管理している領域から、個別のプログラムに割り当てられるのでしょうか?
ヒープというのがどういう場所にあるのかイメージしたいです。
プログラム起動時にシーケンシャルにそのプログラム用の、
(1)プログラム・スタック用領域・ヒープ領域が容易されるものなのか、
(2)プログラム・スタック用領域はシーケンシャルな領域が確保されて、
ヒープはOSが一括管理している共有の領域をもらうのか、
どちらなのでしょうか。
コンパイラや、OSによって違うものなのでしょうか?
普通に考えると(2)のような気がするのですが…。
No.1ベストアンサー
- 回答日時:
>ヒープ領域はOSが一緒くたに管理している領域から、個別のプログラムに割り当てられるのでしょうか?
物理メモリのことを言っていますか?
Windowsなら、それぞれのプロセスは独自の「メモリ空間」を割り当てられます。
読み込んだプログラム本体や、共有するDLL、スタック領域、ヒープ領域などなどがこのメモリ空間内にマッピングされることになります。
# ちなみに実行ファイル(EXEファイルやDLL)には、読み込んだときに効率よく配置できるようベースアドレスが設定されています。
# ベースアドレスに読み込めた場合はアドレスの再割り当ては不要ですが、そのメモリブロックが使用中の場合は
# 別のアドレスに割り当てし直されるので、ちょっつとだけロード時の処理が増えます。
# Dependency Walker等で確認できます。
ということで…概ね
>(1)プログラム・スタック用領域・ヒープ領域が容易されるものなのか
こちらになるかと。
起動時、最初にHeapAlloc()して取得したメモリアドレスを表示するプログラムを作成して多重起動させてみると判るかと。
ついでにインスタンスハンドルも表示してみたり。
# Win32ではモジュールのロードアドレス…のようです。
# 実行ファイルに記録されているロードアドレスはリンカで指定できます。
細かいところはWindowsの内部動作とか解説している書籍などを当たって下さい。
レスありがとうございます。
どうも私がイメージしていたものは間違いであったようですね。
教わりましたことを参考に、調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlコードのロック
-
巡回置換と交代群について
-
カンマ区切り形式ではなく、セ...
-
リンクを送るとは?
-
<IFRAME>でコンテンツ部分のみ...
-
Excel2007 VBA で2ページ目PDF
-
キングファイルの背表紙を作成...
-
トロッファとは何ですか??
-
中国のEV
-
パワーポイントで参照ページを...
-
txtファイル内の指定の単語の数...
-
普通のHPにトラックバックをは...
-
TEX ページ番号について
-
エクセルVBAでマルチページの切...
-
セルの高さをiframe内のページ...
-
shadeのウォークスルーについて...
-
ひらがなをローマ字に
-
adobe PDF リンク枠を消せますか
-
∫√(x^2-x)dxの解き方を教えてく...
-
Ctrl+Hで置換にならない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DreamweaverCS3 テンプレートの...
-
htmlコードのロック
-
Dreamweaver一部にだけ編集可能...
-
static変数のループ内での処理
-
カンマ区切り形式ではなく、セ...
-
巡回置換と交代群について
-
パワーポイントで参照ページを...
-
<IFRAME>でコンテンツ部分のみ...
-
トロッファとは何ですか??
-
キングファイルの背表紙を作成...
-
txtファイル内の指定の単語の数...
-
htmlでテキストファイルの中身...
-
エクセルVBAでマルチページの切...
-
ExcelのROUND関数を一括解除し...
-
リンクをアップデートするしな...
-
adobe PDF リンク枠を消せますか
-
Wordチェックボックス作り方(...
-
リンクを送るとは?
-
中国のEV
-
Ctrl+Hで置換にならない
おすすめ情報