プロが教える店舗&オフィスのセキュリティ対策術

C言語でソースを書いてコンパイルすると「rpg.c 13: out of memory」と表示されてコンパイルできません。どうしたらいいのでしょうか。

A 回答 (10件)

>ありがとうございます。

lsi-c86ではlsiで環境設定をしてlccでコンパイルでしたが、ボーランドC++コンパイラではDOSプロンプトで何を入力すればコンパイルできるのですか?
参考URLにボーランドC++コンパイラのセットアップ方法と使用方法が書いてあります。
DOSプロンプトで 「bcc32 ソースファイル」がコンパイルコマンドになります。(例 bcc32 sample.c)そうすると(成功した場合) sample.exeというファイルができます。これが実行ファイルです。但し、最初にセットアップを行う必要があります。
詳しくは、参考URLを参照ください。
がんばってくださいね。

参考URL:http://www.enri.go.jp/~fks442/K_MUSEN/bcc.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。ちゃんと環境設定を行うことができました。

お礼日時:2007/12/16 19:23

★アドバイス


・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 …→『Borland C++ Compiler 5.5 簡単環境設定ツール』
 次のサイトも参考にして下さい。
 http://ja2yka.homeip.net/old/aki/freedev.htm→『BCC 5.5+BCC DeveloperによるフリーのC/C++開発環境』
・以上。

参考URL:http://ja2yka.homeip.net/old/aki/freedev.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。なんとかご紹介いただいたサイトを見てボーランドの設定ができました。
これからはボーランドを使っていこうと思います。

お礼日時:2007/12/16 19:21

コンパイラを変えたほうがよいと思います。

lsi-c86試食版は、MS-DOSの古きよき時代のもので、現在使用するには、あまりにも貧弱すぎます。現在のフリーで提供されているコンパイラのお勧めは、ボーランド社のC++コンパイラーです。(もちろん、Cも使用可能です)
参考URLからたどり、Borland C++Compiler / Turbo Debuggerを選択して、ダウンロードしてください。ダウンロード時、個人情報を入力する必要があります。(住所、メールアドレスなど)
これで、コンパイルすれば、この件は解決すると思います。

参考URL:http://www.enri.go.jp/~fks442/K_MUSEN/bcc.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。lsi-c86ではlsiで環境設定をしてlccでコンパイルでしたが、ボーランドC++コンパイラではDOSプロンプトで何を入力すればコンパイルできるのですか?

お礼日時:2007/12/16 12:28

lsi-c86試食版の仕様にスモールモデルしかコンパイルできないっていうのがあった気もしますよ


64KB 以内のプログラムしか作成できないらしいです
もし超えているようならプログラムを少し工夫してみるべきかもしれませんね
    • good
    • 0
この回答へのお礼

ありがとうございます。前にボーランドC++5.5コンパイラをインストールしたんですが使い方が分からずにずっとlsi-c86を使っていました。ボーランドはどうやってコンパイルすればいいのでしょうか。

お礼日時:2007/12/16 12:20

> この後にはif文がずらーっと書かれています。



別の方が回答なさったとおり、これが原因で
コンパイラの処理能力を超えてしまったのかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。たぶんif文が原因ですね。

お礼日時:2007/12/16 11:51

>2.コンパイラはlsi-c86試食版です。



 これはコンパイル時にスモールモード(64KB)で動くように生成されますが、セグメントを超えるような領域に機械語を配置しようとするのが原因です。
 別のコンパイラにするか製品版は問題点が解消されています。

 回避方法は、if文を15個以上を使うと該当エラーメッセージが出力されるようです。
 if文を減らすなどの工夫が必要です。

 コンパイル時のオプション指定で、”中間ファイルを削除しない”を設定すると、たとえば、
 hello.cをコンパイルすると、→hello.a86
 みたいなファイルが消されずに残ります。
 これをテキストファイルで読み込ませて点検すればエラーの意味が判明します。
    • good
    • 0
この回答へのお礼

ありがとうございます。たぶんif文が多すぎるんですね。ではどうしたらif文が少なくすむのでしょうか。

お礼日時:2007/12/15 16:53

rpg.cの、先頭から30行目あたりまでを


見せていただけますか?

13行目あたりで配列を定義しているとすると、
サイズが大きすぎるのかもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
/*インクルード*/
#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文がずらーっと書かれています。

お礼日時:2007/12/15 16:49

> out of memoryってどういう異常なのでしょうか。



大きくわけて2つの可能性が考えられます。
ひとつは、コンパイラを実行しているコンピュータのメモリが不足して、コンパイルを継続できなくなったこと。もうひとつは、コンパイルしているコンピュータではなく、実行させるコンピュータのメモリに収まりきらないためにエラーが報告されたこと。

セルフコンパイラかクロスコンパイラかも含めて環境がまったくわからないので、これ以上のことはいえません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。セルフやクロスってなんですか?

お礼日時:2007/12/15 16:50

一般的に、「 out of memory」とは「メモリ不足」の意味です。


このことから考えられることは、コンパイラが、メモリ不足のため、コンパイルをギブアップしたということです。
では、なぜこのようなことが、起こるかということですが、いろいろなケースがあります。
1.コンパらが貧弱で、大きめの量のソースを処理できない。
2.ソースの量があまりにも大きい。
3.本当にメモリが足りない。
ですので、以下、補足要求です。
以下の情報を述べてください。
1.OSの種類
2.コンパイラの名称
3.ソースのステップ数(もし、大量でないなら、ソースをすべて提示してください)
上記の情報がわかると、対策が得られやすくなります。

この回答への補足

1.OSの種類はwindowsXPです。
2.コンパイラはlsi-c86試食版です。
3.605行あります。
今作っているのは歩いたところが×印になるゲームなのでソースが長くなっています。これが問題でしょうか。

補足日時:2007/12/15 14:58
    • good
    • 0
この回答へのお礼

ありがとうございます。lsi-c86試食版は貧弱なのでしょうか。

お礼日時:2007/12/15 15:05

> どうしたらいいのでしょうか。



次の三つの選択肢があります。

・ソースを修正してコンパイルできるようにする。
・処理系を変更する。
・あきらめる。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。ソースを修正したいのですが、どこにも異常が見当たらないのです。out of memoryってどういう異常なのでしょうか。

お礼日時:2007/12/15 12:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!