ヒープ領域を使い果たしました

[戻る]
shogo 2004/11/18(木) 14:31:10
shogoと申します.

開発環境はWinXP,VC7.0,MFCです.

タイトルの通り,
「ヒープ領域を使い果たしました」というエラーが出るようになってしまいました.
そうなる経緯を説明しても仕方がないと思いますが,
既存のメニューに,新たなコマンドを追加し,
そのコマンドのイベントハンドラを追加したところ,
このようなエラーが出てしまうようになりました.

このエラーは,どういうことを言っていて,
どうすれば回避することができるのでしょうか?
ご指導,よろしくお願いします.

123 2004/11/18(木) 15:46:09
コンパイルの時にエラーがでるのですか?
もしそうなら、エラーコードで検索してみれば

アイススケーター 2004/11/18(木) 15:49:44
MFCのヘルプが下記の通りです。

致命的なエラー C1002
パス 2 の実行中に、ヒープ領域を使い果たしました。

コンパイラのパス 2 (C2.EXE) の実行中に、コンパイラが動的メモリ空間を使い果たしまし
た。このエラーは通常、プログラムのシンボルの数が多すぎるときや式が複雑すぎるときに起こ
ります。

次のような解決策が考えられます。 
エラーを起こしたファイルを複数の小さいサイズのソース ファイルに分割します。
式を小さな部分式に分解します。
システムで実行中の他のプログラムやドライバのうちメモリを多く消費するものをシステムから
取り除きます。 

タスクマネージャでメモリ使用量を確認して下さい。

shogo 2004/11/18(木) 16:10:28
123さん,アイススケーターさん.
返信ありがとうございます.

123さん.
コンパイルの時にエラーが出ています.
一応,エラーメッセージで検索を今一度してみます.

アイススケーターさんのレスで,
> エラーを起こしたファイルを複数の小さいサイズのソースファイルに分割
という方法が挙げられていますが,
エラーを起こしたファイルは,100行程度のソースになっています.
(エラーの出ないファイルで1000行弱のものもありますが.
実際,こちらにイベントハンドラを追加したら,エラーが出るようになりました.)
ところで,分割とは,どのように行えばよいのでしょうか?

よろしくお願いします.

shogo 2004/11/18(木) 17:32:55
[[解決]]
自己レスですが,
http://www.microsoft.com/japan/developer/library/vccore/_core_.2f.zm.htm
ここに,ヒープサイズの変更方法が書いてありました.

ここの記述どおり,
プロジェクトのプロパティ内の「コマンドライン」→「追加のオプション」に,
/Zm200 と追加したところ(ヒープサイズを200%,つまり2倍に),
無事コンパイルできるようになりました.

返信していただいた方々,ありがとうございました.

古いスレッドには追加発言できません。