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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- C言語・C++・C# visual studio 2019 についての質問です 1 2022/09/21 09:58
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Windows 10 ウィンドウズ11でスリープの設定は? 1 2022/05/26 02:41
- Android(アンドロイド) galaxy s8+にUSBメモリ(type-c)を接続し、動画再生すると熱くなるのですが… USB 5 2022/06/24 17:21
- その他(IT・Webサービス) backlogガントチャートのグルーピング項目が少ない ガントチャートを仕事で使用しています。 担当 1 2023/04/04 14:31
- ノートパソコン 自作にするか、メーカーか、オススメのノートPCをおしえてください。 5 2022/11/29 17:42
- 統計学 統計に関する質問です 3 2022/05/19 20:21
- その他(プログラミング・Web制作) Visual StudioでDjangoのプロジェクト配下のappを作成する方法 1 2022/05/01 03:47
- ビデオカード・サウンドカード PCに接続したイヤフォンのマイクが使えません。 3 2022/10/22 11:07
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
コンパイラの制限 : ヒープの領域を使い果たしました
C言語・C++・C#
-
ヒープ領域の限界値設定
その他(開発・運用・管理)
-
C言語 配列の長さの上限
C言語・C++・C#
-
-
4
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
5
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
6
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
7
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
8
CSVファイルの特定行の削除
Visual Basic(VBA)
-
9
画面を強制的に再描画させる方法
C言語・C++・C#
-
10
最大スタックサイズを大きくすることの影響は?
C言語・C++・C#
-
11
構造体のメンバをfor文で回したい
C言語・C++・C#
-
12
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
13
ファイル出力の場所を指定
C言語・C++・C#
-
14
win32APIのHeapAlloc()の使い方について、質問です。
C言語・C++・C#
-
15
【C#】DataGridViewの最大列数について
システム
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
エクセルのメモリ使用状況/Appl...
-
大きな配列を使うには?
-
変数をあなたの身近なものに例...
-
大容量のメモリ確保をスワップ...
-
メモリの解放について VB6 VBA
-
「×・・×」の命令が「××・×」の...
-
LoadLibraryしたらFreeLibrary
-
マインスイーパ、自動解析プロ...
-
動的確保できるメモリ容量
-
【C言語】再帰が時間がかかる...
-
ReadEventLogについて
-
メモリアロケーション異常の発...
-
動的メモリとexit(C言語)
-
C言語における再帰呼び出しの...
-
エクセル キャッシュメモリー...
-
計算速度が遅い
-
Apacheでバーチャルホストの最...
-
メモリを解放しないとどうなる?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
C言語における再帰呼び出しの...
-
エクセルVBA 大容量CSVファイル...
-
動的メモリとexit(C言語)
-
エクセルのメモリ使用状況/Appl...
-
メモリが不足しています(VBA)
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
メモリのセグメント違反の解決...
-
メモリ不足
-
EXCEL-VBAにてADOのレコードセ...
-
エクセル キャッシュメモリー...
-
【C言語】再帰が時間がかかる...
-
C#のOutOfMemoryException発生...
-
closeとメモリの開放について
-
バッチファイルでの実行EXEのメ...
-
メモリの解放について VB6 VBA
-
「memcpy」と「strcpy」について
おすすめ情報