
Visual Studio (Win32プログラム)には [プロジェクトのプロパティ]→[リンカ]→[システム] に「ヒープサイズの設定」項があります。
この項目は何を意味しているのかお教えください。
例えばこの項目に 100 を入力すると、リンク時のオプションに 「/HEAP:"100"」が挿入されます。
このことは「このソフトウエアに使用を許すヒープメモリの総量を "100バイト" とする。」の意味ではないのでしょうか。
ここ数日webを調べているのですがはっきり判りません。
また、自分で作成したソフトウエア(ヒープメモリをたくさん使っている)についても、「/HEAP:"100"」オプションを付けてコンパイルしても、結果に違いがないように思われます。
知識をお持ちの方がいらっしゃいましたら、ご回答をお願い致します。
No.1ベストアンサー
- 回答日時:
初期ヒープサイズの指定…ですかね。
http://home.a00.itscom.net/hatada/mcc/doc/pe.html
exeファイルのヘッダのSizeOfHeapReserveに相当するかと。
https://msdn.microsoft.com/ja-jp/library/cc43005 …
で取得できるプロセスヒープの初期サイズの指定…になるものと思われます。
# Cランタイムライブラリ使っていると、そちらで別にHeapCrete()しているかも知れませんが。(malloc()とかはそっちから取ってくる…かな?)
# VSでランタイムライブラリのソースコードをインストールしていれば、読んでみるのも手かも知れません。
>自分で作成したソフトウエア(ヒープメモリをたくさん使っている)についても、「/HEAP:"100"」オプションを付けてコンパイルしても、結果に違いがないように思われます。
一応、ヒープ領域は拡大可能だったと思いますので、不足していた場合にライブラリ内部で拡大の処理を行っているのではないかと。
早速ご連絡いただきありがとうございます。
「/HEAP」オプションを調べてみると、「既定値は 1Mb」と書かれており、ソフトウエアが多くのヒープを要求したり、またはフラグメンテーションが進み要求されたサイズを取得できなくなると、OSが追加のメモリを切り出してソフトウエアに与える。
などと、つまり「コンピュータ資源を使いきるまでヒープメモリは自動的に大きくなる。」意味が書かれたwebがたくさんあります。
一方、「https://devalon.biz/visual-studio-c-de-stdbad_al …」のように「ソフトウエアが利用できるヒープメモリの総量は /HEAP オプションで決定される。」意味のことが書かれたwebも散見されます。
Wr5様 も「”初期”ヒープサイズの指定…ですかね。」とお書きになり、「一応、ヒープ領域は拡大可能だった...」ところを参照すると前者のお考えのようです。
いったいどちらが正しいのでしょう?
No.2
- 回答日時:
>つまり「コンピュータ資源を使いきるまでヒープメモリは自動的に大きくなる。
」意味が書かれたwebがたくさんあります。今時のPC(OS?)なら仮想記憶などもあったりするので、メモリに関しては割と潤沢…かと。
# 組み込み系などのマイコンなどは除きますが。
>「ソフトウエアが利用できるヒープメモリの総量は /HEAP オプションで決定される。」意味のことが書かれたwebも散見されます。
「フラグメンテーションしないように大きめな値予約しとけ」みたいな意図に感じます。
実際のところは不明ですが……。
>「一応、ヒープ領域は拡大可能だった...」ところを参照すると前者のお考えのようです。
https://msdn.microsoft.com/ja-jp/library/cc43011 …
HeapCreate()の引数次第で、OSに対して拡大不可(というか最大値サイズ指定)が可能…っぽいです。
# ただし、OS側で最大ヒープサイズが決まっている場合もありますが。(アドレスのビット数の関係で)
VS2017のCRTだと、\Program Files\Microsoft Visual Studio 14.0\VC\crt\src\vccorlib\heap.cpp 辺りでHeapAlloc()のコールとかがあるようです。
で、プロセスヒープが拡大可能なのかは不明なまま……。
とりあえず…「/HEAP:オプションは現状ではあまり意味のないオプション」かな。と…私自身は思っていますけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリが不足しています(VBA)
-
メモリを解放しないとどうなる?
-
メモリのセグメント違反の解決...
-
エクセルのメモリ使用状況/Appl...
-
非再入可能なプログラム
-
PIC 文字 を 数値に 変換
-
メモリ不足
-
Bitmapを重ね合わせる方法
-
移動可能メモリ
-
直接メモリにアドレス割付けで...
-
クリスタルレポートでメモリ不...
-
大容量のメモリ確保をスワップ...
-
「ヒープサイズの設定」て何?
-
エラー処理,メモリ開放,exit
-
C言語における再帰呼び出しの...
-
EXCEL-VBAにてADOのレコードセ...
-
H8について教えて下さい。
-
C言語初心者です。debug assert...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
Access Violationについて
-
VBAの配列サイズとメモリに関して
-
メモリのセグメント違反の解決...
-
メモリが不足しています(VBA)
-
メモリ不足
-
大容量のメモリ確保をスワップ...
-
ファイルマッピング関数で失敗
-
PC-98で拡張メモリを使え...
-
エラーについて
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
C言語における再帰呼び出しの...
-
オフスクリーンサーフェスへの...
-
1ページに収まるオブジェクト...
-
新規購入PCのスペックについて...
-
4GB搭載したマシンのメモリ情...
-
組み込み系でのmallocについて
-
ルネサスマイコン(R8C) ビルド...
-
Visual Basic Net2003
おすすめ情報