コンパイラの制限 : ヒープの領域を使い果たしました

このQ&Aのポイント
  • 標準C++の勉強を始めたばかりなのですが、以前のC++プログラムのヘッダを変更したところ、ヒープの領域を使い果たしたエラーが出ました。
  • ヘッダを変えただけでエラーが出る理由がわからず困っています。同じVC++6.0のコンパイラを使用しているのになぜでしょうか。
  • 詳しい方からのアドバイスをお待ちしています。
回答を見る
  • ベストアンサー

コンパイラの制限 : ヒープの領域を使い果たしました

最近、標準C++の勉強を始めたばかりなのですが、以前にC++で書いたプログラムのヘッダを標準C++に変更して(例えば、#include<iostream.h>を#include<iostream>に変える)コンパイルしたところ、 「コンパイラの制限 : ヒープの領域を使い果たしました; 上限を設定するために /Zm オプションを使用してください。」とのエラーがでました。このエラーは以前は出なかったもので、以前も今回もコンパイラーはVC++6.0です。なぜ、ヘッダを変えただけでこのようなエラーが出たのでしょうか。漠然とした質問で答えようがないかもしれませんが、ご存知の方いらっしゃったら教えてください。お願いします。

  • kary
  • お礼率95% (82/86)

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

コンパイラ自身が使うメモリ領域の大きさ制限にひっかかったわけですね。 これは、iostream.h より iostream の方が内容が複雑であるため、コンパイルに必要なメモリが増え、デフォルトの設定(100, 105MBの意味らしい)では足らなくなったということだと思います。

kary
質問者

お礼

コンパイラがヒープ領域を使い果はたしたとはどういうこと?、という状態ですが、とりあえず/Zmスイッチを使ってコンパイルはできました。ありがとうございました。

関連するQ&A

  • VC++の/Zm オプションについて

    仕事でVC++で開発されたソフトに機能追加をしています。 環境はVisualC++6.0(SP3)&Win2Kです。 何年か前に開発されて他の人がやってたものを今回引き継ぎました。 SDKで開発しているソフトなのですが、グローバル変数が かなり多いです。おそらくそれが原因と思われますが、 今回の機能追加の途中でビルド時にエラーが出るように なりました。 (致命的なエラー C1076 コンパイラの制限 : 内部ヒープ領域の上限に達しました。領域を広げるには、/Zm オプションを使ってください。) 調べてみたところ、/Zm コンパイラオプションで コンパイラのメモリ アロケーションの領域を設定するとよいみたいでした。 ひとまず/Zmが150になっていたものを160に設定してビルドは通るようになりましたが、気がかりな点があります。 コンパイラオプションを変えることによって、何か弊害が でることはあるのでしょうか。 今回のコンパイラオプションを変えたことが原因で不具合があってはと思いまして・・・ VC++初心者なのですごく初歩的な質問をしているかもしれません。どなたか教えてください。

  • C++での <iostream.h>と<iostream>とusingnamespaceの関係等を教えてください。

    どうでもいい質問なのですが… C++で色々とソースを打っていると気づいたのです。 #include <iostream.h>とするとusing namespace std;の一文を書かなくてもコンパイルエラーになりません。 また、逆に#include <iostream>とするとusing namespace std;の一文が必要になります。 だから、h(ヘッダファイル)の.hは必要なのかな?と思い、#include <cstdlib.h>とするとコンパイルエラーになります。 なにか理屈がわかりません。コンパイラはVC++6.0です。よろしくご回答の方お願いいたします。

  • OMCCコンパイラ #includeができない

    並列化を学んでいるのですが、 omccコンパイラでcプログラムをコンパイルすると、 "/usr/include/stdio.h", line ***: syntax error at symbol '__*' ↑の様なエラーが10行ほど出てしまいます。 gccコンパイラでコンパイルしてみると、普通に通るのですが…。 何かインストールし忘れているのでしょうか?

  • エラー 'iostream.h' : No such file or directory

    当方VC++初心者です。3Dモーションセンサーを購入してその角度等の値をファイルに書き込みすることをしようとしています。 センサーに付属しているVC++用のサンプルプログラムをコンパイルしたところ、 fatal error C1083: include ファイルを開けません。'iostream.h' : No such file or directory というエラーが出ます。 #include <iostream.h>が関係していると思い、 #include <iostream>にしてみたり、#include <iostream.h>を消してコンパイルすると、エラーがたくさん出てくるので#include <iostream.h>に意味があると思われますが、そのくせ#include <iostream.h>というファイルがないというのはどういうことなのかよくわからず対処できずに困っています。 Microsoft Visual Studio .net 2003を使っています。

  • コンパイラについて

    Pro*Cでプリコンパイラをして、次にVC++上でコンパイラをすると インクルード ファイルがオープンできません。'sqlda.h': No such file or directory と、エラーが出ます。'sqlda.h'用のファイルを探しているのですが見つかり ません。どこにあるか教えてください。できればパスを書いていただけると たすかります。

  • windowsプログラムのヘッダーについて

    SDKを用いてWindowsプログラムを作っています。 #include <ctime> とインクルードした上でclock()関数を使用したのですが、コンパイラから未定義の関数を呼び出したことになってエラーが出てしまいます。他のヘッダーも含めC++の標準ライブラリはインクルードできないのでしょうか? ちなみに、<time.h>でインクルードすればコンパイルできます。

  • VisualStudio.netでmemcmp関数が使えない?

    以前VC++6.0で作ったプログラムをVisualStudio.net_pro_ver2003でコンパイルしようと思っています。 VC++の空プロジェクトを作り、既存項目の追加で以前作成したソースファイルを挿入し、 それをコンパイルしました。 すると、初めにmemcmp関数が「'/clr'オプションを持つCコンパイラで完全なプロトタイプ関数が必要です」と表示され、 memcmpのある全ての行に対し、「関数へのポインタを通して実行される呼び出しに対する引数が多過ぎます」いうエラーが出てしまいます。 strings.hもインクルードしておりますし、VC++では問題なくコンパイルが通っていたので原因が良く分かりません。 そもそもVC時代から良く分からずに使っていたので基本が出来ていないようですが、 宜しく御願い致します。

  • Cコンパイラについて・・・

    Cコンパイラについてなのですが・・・僕はbroland(ブローランド) の無料コンパイラをダウンロードしてきときと様のCpadのちゃんと対応したやつを使っているのですがコンパイルが実行されず・・・・ エラーが出てしまいます。 時間がありません。誰助けて・・・・

  • 8080用のクロスコンパイラは、ないでしょうか。

    8080用のクロスコンパイラは、ないでしょうか。 TK-80シミュレーターにて、プログラム開発をしたいのですが、さすがにアセンブラはきついので、Cコンパイラを探しています。 フリーのソフトで、MS-WindowsかLinuxで動作するクロスコンパイラはないでしょうか。 (8080アセンブラを出力するCコンパイラ) 以前探したときは、(確か)C言語をZ80にコンパイルして、それをさらに8080用アセンブラに変換するのを見つけましたが、うまく動きませんでした。 何か情報をもらえるとありがたいです。 よろしくお願いします。

  • VC++ iostreamの不具合(?)

    手強いVC++のエラーです(対処が効かない #include <iostream> int main () {cout << "ggrks"; return 0;} C2065エラー 'cout' : 定義されていない識別子です。 #include <iostream.h> int main () {cout << "Hello C++!"; return 0;} C1083エラー include ファイルを開けません。'iostream.h': No such file or directory iostream(拡張子無)はCドライブのプログラムファイル、Microsoft Visual Studio 9.0\VC\includeに存在してます。 パスは許可してあります。 ツール→VC++ディレクトリ→インクルードファイルで C:\Program Files\Microsoft Visual Studio 9.0\VC\include と C:\Program Files\Microsoft Visual Studio 9.0\VC\include\iostream もついでに。 インストが完全でなかったのかと思い、「修復又は再インストール」で再インストしましたが変わりません。 気分転換(?)に一回アンインストールしてから再インストール(あまり意味ありませんけど)しても同様です。 どうすれば良いでしょうか。ご教授願います。

専門家に質問してみよう