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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
コンパイラの制限 : ヒープの領域を使い果たしました
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
最大スタックサイズを大きくすることの影響は?
C言語・C++・C#
-
8
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
9
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
10
CSVファイルの特定行の削除
Visual Basic(VBA)
-
11
構造体のメンバをfor文で回したい
C言語・C++・C#
-
12
ファイル出力の場所を指定
C言語・C++・C#
-
13
【C#】DataGridViewの最大列数について
システム
-
14
win32APIのHeapAlloc()の使い方について、質問です。
C言語・C++・C#
-
15
Visual Studio 「AnyCpu」について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
動的メモリとexit(C言語)
-
Access Violationについて
-
ファイルの読み込みが遅い
-
大容量のメモリ確保をスワップ...
-
「ヒープサイズの設定」て何?
-
メモリのセグメント違反の解決...
-
Apacheでバーチャルホストの最...
-
メモリ内をトレースログに吐きたい
-
VB2005 Datagridview の仮想モ...
-
C言語 昇順・降順 ソート
-
ゲームプログラミングのマップ...
-
C言語初心者です。debug assert...
-
メモリの解放の仕方
-
メモリ負荷試験のツール
-
エクセル キャッシュメモリー...
-
VBAの配列サイズとメモリに関して
-
C++のCopyFileでメモリが増える
-
エクセルのメモリ使用状況/Appl...
-
メモリアロケーション異常の発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
エクセルVBA 大容量CSVファイル...
-
EXCEL-VBAにてADOのレコードセ...
-
バッチファイルでの実行EXEのメ...
-
メモリ不足
-
メモリのセグメント違反の解決...
-
メモリが不足しています(VBA)
-
【C言語】再帰が時間がかかる...
-
ファイルマッピング関数で失敗
-
C言語:関数のメモリ上でのサイ...
-
メモリの解放の仕方
-
VC++におけるメモリ使用量について
-
メモリの消費量について
-
Bitmapを重ね合わせる方法
-
メモリを解放しないとどうなる?
-
C#のOutOfMemoryException発生...
-
メモリの解放について VB6 VBA
おすすめ情報