アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual Studio (Win32プログラム)には [プロジェクトのプロパティ]→[リンカ]→[システム] に「ヒープサイズの設定」項があります。
この項目は何を意味しているのかお教えください。

例えばこの項目に 100 を入力すると、リンク時のオプションに 「/HEAP:"100"」が挿入されます。
このことは「このソフトウエアに使用を許すヒープメモリの総量を "100バイト" とする。」の意味ではないのでしょうか。

ここ数日webを調べているのですがはっきり判りません。
また、自分で作成したソフトウエア(ヒープメモリをたくさん使っている)についても、「/HEAP:"100"」オプションを付けてコンパイルしても、結果に違いがないように思われます。

知識をお持ちの方がいらっしゃいましたら、ご回答をお願い致します。

A 回答 (2件)

https://msdn.microsoft.com/ja-jp/library/f90ybzk …

初期ヒープサイズの指定…ですかね。

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"」オプションを付けてコンパイルしても、結果に違いがないように思われます。

一応、ヒープ領域は拡大可能だったと思いますので、不足していた場合にライブラリ内部で拡大の処理を行っているのではないかと。
    • good
    • 0
この回答へのお礼

早速ご連絡いただきありがとうございます。
「/HEAP」オプションを調べてみると、「既定値は 1Mb」と書かれており、ソフトウエアが多くのヒープを要求したり、またはフラグメンテーションが進み要求されたサイズを取得できなくなると、OSが追加のメモリを切り出してソフトウエアに与える。
などと、つまり「コンピュータ資源を使いきるまでヒープメモリは自動的に大きくなる。」意味が書かれたwebがたくさんあります。

一方、「https://devalon.biz/visual-studio-c-de-stdbad_al …」のように「ソフトウエアが利用できるヒープメモリの総量は /HEAP オプションで決定される。」意味のことが書かれたwebも散見されます。

Wr5様 も「”初期”ヒープサイズの指定…ですかね。」とお書きになり、「一応、ヒープ領域は拡大可能だった...」ところを参照すると前者のお考えのようです。
いったいどちらが正しいのでしょう?

お礼日時:2017/11/09 15:20

>つまり「コンピュータ資源を使いきるまでヒープメモリは自動的に大きくなる。

」意味が書かれた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:オプションは現状ではあまり意味のないオプション」かな。と…私自身は思っていますけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています