- ベストアンサー
コンパイル時に「out of memory」とでます。
C言語でソースを書いてコンパイルすると「rpg.c 13: out of memory」と表示されてコンパイルできません。どうしたらいいのでしょうか。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
>ありがとうございます。lsi-c86ではlsiで環境設定をしてlccでコンパイルでしたが、ボーランドC++コンパイラではDOSプロンプトで何を入力すればコンパイルできるのですか? 参考URLにボーランドC++コンパイラのセットアップ方法と使用方法が書いてあります。 DOSプロンプトで 「bcc32 ソースファイル」がコンパイルコマンドになります。(例 bcc32 sample.c)そうすると(成功した場合) sample.exeというファイルができます。これが実行ファイルです。但し、最初にセットアップを行う必要があります。 詳しくは、参考URLを参照ください。 がんばってくださいね。
その他の回答 (9)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス ・bccを使うなら『BCC Developer』というフリーソフトを使ってみてはどうでしょうか。 http://www.hi-ho.ne.jp/jun_miura/bccdev.htm→『BCC Developer』 このソフトは総合環境ですのでエディタもあり、コンパイルもコマンドラインから 実行しなくてもボタン1つで出来るようです。 ・コンソール・アプリケーションもつくれるようです。 詳しくはマニュアルをどうぞ。 それから bcc の環境設定は次のフリーソフトを使えば楽になるかもしれません。 http://www.vector.co.jp/soft/win95/prog/se149182.html→『Borland C++ Compiler 5.5 簡単環境設定ツール』 次のサイトも参考にして下さい。 http://ja2yka.homeip.net/old/aki/freedev.htm→『BCC 5.5+BCC DeveloperによるフリーのC/C++開発環境』 ・以上。
お礼
ありがとうございます。なんとかご紹介いただいたサイトを見てボーランドの設定ができました。 これからはボーランドを使っていこうと思います。
- tatsu99
- ベストアンサー率52% (391/751)
コンパイラを変えたほうがよいと思います。lsi-c86試食版は、MS-DOSの古きよき時代のもので、現在使用するには、あまりにも貧弱すぎます。現在のフリーで提供されているコンパイラのお勧めは、ボーランド社のC++コンパイラーです。(もちろん、Cも使用可能です) 参考URLからたどり、Borland C++Compiler / Turbo Debuggerを選択して、ダウンロードしてください。ダウンロード時、個人情報を入力する必要があります。(住所、メールアドレスなど) これで、コンパイルすれば、この件は解決すると思います。
お礼
ありがとうございます。lsi-c86ではlsiで環境設定をしてlccでコンパイルでしたが、ボーランドC++コンパイラではDOSプロンプトで何を入力すればコンパイルできるのですか?
- Haruzion77
- ベストアンサー率0% (0/1)
lsi-c86試食版の仕様にスモールモデルしかコンパイルできないっていうのがあった気もしますよ 64KB 以内のプログラムしか作成できないらしいです もし超えているようならプログラムを少し工夫してみるべきかもしれませんね
お礼
ありがとうございます。前にボーランドC++5.5コンパイラをインストールしたんですが使い方が分からずにずっとlsi-c86を使っていました。ボーランドはどうやってコンパイルすればいいのでしょうか。
- asuncion
- ベストアンサー率33% (2127/6289)
> この後にはif文がずらーっと書かれています。 別の方が回答なさったとおり、これが原因で コンパイラの処理能力を超えてしまったのかもしれません。
お礼
ありがとうございます。たぶんif文が原因ですね。
- LEVELUP100
- ベストアンサー率40% (183/453)
>2.コンパイラはlsi-c86試食版です。 これはコンパイル時にスモールモード(64KB)で動くように生成されますが、セグメントを超えるような領域に機械語を配置しようとするのが原因です。 別のコンパイラにするか製品版は問題点が解消されています。 回避方法は、if文を15個以上を使うと該当エラーメッセージが出力されるようです。 if文を減らすなどの工夫が必要です。 コンパイル時のオプション指定で、”中間ファイルを削除しない”を設定すると、たとえば、 hello.cをコンパイルすると、→hello.a86 みたいなファイルが消されずに残ります。 これをテキストファイルで読み込ませて点検すればエラーの意味が判明します。
お礼
ありがとうございます。たぶんif文が多すぎるんですね。ではどうしたらif文が少なくすむのでしょうか。
- asuncion
- ベストアンサー率33% (2127/6289)
rpg.cの、先頭から30行目あたりまでを 見せていただけますか? 13行目あたりで配列を定義しているとすると、 サイズが大きすぎるのかもしれません。
お礼
回答ありがとうございます。 /*インクルード*/ #include<stdio.h> #include<stdlib.h> /*盤面*/ char a[20]="-----\n"; char b[20]="- -\n"; char c[20]="- o -\n"; char d[20]="- -\n"; char e[20]="-----\n"; unsigned int keika; /*経過*/ /*本文*/ main() { int yusha; /*勇者(カマキリ)*/ char get[10]; printf("蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切\n"); printf("蟷 螂\n"); printf("螳 カマキリ移動ゲーム 制作者 安達勇介 螂\n"); printf("鎌 切\n"); printf("蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切蟷螂螳螂鎌切\n\n"); printf("%s%s%s%s%s\n",a,b,c,d,e); printf("カマキリ(o)を動かせ!!!!!\n"); printf("右ー1、左ー2、上ー3、下ー4\n"); gets(get); yusha=atoi(get); switch(yusha) { case 1: /*右*/ : : : この後にはif文がずらーっと書かれています。
- jacta
- ベストアンサー率26% (845/3158)
> out of memoryってどういう異常なのでしょうか。 大きくわけて2つの可能性が考えられます。 ひとつは、コンパイラを実行しているコンピュータのメモリが不足して、コンパイルを継続できなくなったこと。もうひとつは、コンパイルしているコンピュータではなく、実行させるコンピュータのメモリに収まりきらないためにエラーが報告されたこと。 セルフコンパイラかクロスコンパイラかも含めて環境がまったくわからないので、これ以上のことはいえません。
お礼
回答ありがとうございます。セルフやクロスってなんですか?
- tatsu99
- ベストアンサー率52% (391/751)
一般的に、「 out of memory」とは「メモリ不足」の意味です。 このことから考えられることは、コンパイラが、メモリ不足のため、コンパイルをギブアップしたということです。 では、なぜこのようなことが、起こるかということですが、いろいろなケースがあります。 1.コンパらが貧弱で、大きめの量のソースを処理できない。 2.ソースの量があまりにも大きい。 3.本当にメモリが足りない。 ですので、以下、補足要求です。 以下の情報を述べてください。 1.OSの種類 2.コンパイラの名称 3.ソースのステップ数(もし、大量でないなら、ソースをすべて提示してください) 上記の情報がわかると、対策が得られやすくなります。
お礼
ありがとうございます。lsi-c86試食版は貧弱なのでしょうか。
補足
1.OSの種類はwindowsXPです。 2.コンパイラはlsi-c86試食版です。 3.605行あります。 今作っているのは歩いたところが×印になるゲームなのでソースが長くなっています。これが問題でしょうか。
- jacta
- ベストアンサー率26% (845/3158)
> どうしたらいいのでしょうか。 次の三つの選択肢があります。 ・ソースを修正してコンパイルできるようにする。 ・処理系を変更する。 ・あきらめる。
お礼
回答ありがとうございます。ソースを修正したいのですが、どこにも異常が見当たらないのです。out of memoryってどういう異常なのでしょうか。
お礼
ありがとうございます。ちゃんと環境設定を行うことができました。