プログラムをコンパイルはできるのですが、実行するとエラーが出てしまいます。
run-time error R6000
-stack overflow
と出るのですが、これはどういう意味なのでしょうか?
どこを直せばいいのかわからず困っています。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

 スタックとはメモリの一部で、主にローカル変数の確保や関数呼び出し元のアドレス保存、関数へのパラメータ受け渡し領域として使われます。


 stack overflowとは、スタックとして割り当てられているメモリ領域を使い切ってしまったというOSからのエラーメッセージです。

 考え得る原因はpunchan_jpさんのおっしゃる通りです。その中でも一番ありがちなのが、巨大な配列の関数内確保ですね。
 簡単な解決策はグローバル変数にすることです。グローバル変数はスタックとは別のメモリ領域に確保されます。関数内でもstaticを付けて宣言すれば同様になります。
 また、mallocによってメモリを動的確保するのも手です。この場合初期化はできませんが。

 再帰関数の終了条件設定ミスもよくあります。これはアドバイスできる範疇ではないので、もし思い当たるならば、補足辺りにその関数を載せてもらわないと回答はムリですね。
    • good
    • 0
この回答へのお礼

ありがとうございました!おかげで解決し、実行できるようになりました!!

お礼日時:2001/06/07 20:01

使っているのは Visual C (もしくは MSC) ですよね。



コマンドラインでコンパイルをしているのであれば、 /F オプションで
指定します。

d:\> cl /F20000000 ...

プロジェクトを作っているのであれば、プロジェクトの設定で、「リンク」
というタブがあるはずで、そこでスタックのサイズを指定できます。
多分、「スタックアロケーション」の「リザーブ」となっているはず。

指定は、バイト単位で、デフォルトでは 1Mbyte なので、それよりも
大きな数字を設定することになります。


もし、スタックが足りなくなっている原因が関数の呼出しが深すぎる
ことが原因であれば、スタックサイズの指定をしても問題は解決しません。
プログラムの見直しをしましょう。

ただし、普通の呼出しかたでは、めったにこうなることはありません。
プログラムの中で、関数の再帰呼出しをしていなければ、スタックサイズの
指定でいけるはずです。
    • good
    • 0
この回答へのお礼

ありがとうございました!おかげで解決し、実行できるようになりました!!

お礼日時:2001/06/07 20:01

stack overflowということは、関数の呼び出しが深すぎるか、


関数にローカルな変数が多すぎるかです。

関数から自分自身を呼び出す再帰呼出しをしていて、
その終了条件が誤ってませんか?
巨大な配列変数を関数内で宣言していませんか?

もし、それらに問題ない場合、stack のサイズが小さすぎるのかもしれません。
UNIXであればシェル内で stack のサイズを増やすことができると思います。
とはいえ、デフォルトの stack サイズでも overflow しないように書くのが
本筋でしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました!おかげで解決し、実行できるようになりました!!

お礼日時:2001/06/07 20:00

コンパイルオプションのスタックサイズを大きく設定するか、スタックチェックをしないように設定して下さい。



(あれ、リンカオプションだったかな?)

OSとコンパイラ(出来ればバージョンも)をはっきりさせないと正解は来ないかも、
メッセージは、MS-DOSのMSCににているけど。
    • good
    • 0
この回答へのお礼

ありがとうございました!おかげで解決し、実行できるようになりました!!

お礼日時:2001/06/07 20:00

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QNo sooner than

He had arrived sooner than he had been expected.
の sooner の位置と、
He had no sooner arrived than he asked for food.
の sooner の位置はどうしてこのようになっているのでしょうか?どうして後の文ではこの位置になっているのですか?

Aベストアンサー

1番さんの回答の中で

>「no sooner ~ than」は「hardly (scarcely) ~ when (before)」 と同じ意味でつかわれ、
<主語+no sooner+動詞 ~ than+主語+動詞>
という形をとります。

とありますが、ここにヒントがあります。

He had arrived sooner than he had been expected.
(彼は思ったより早く着いていた。)
比較を外すと
He had arrived soon.
普通、副詞は文末に来るのでこの語順です。

He had no sooner arrived than he asked for food.
(彼は着くとすぐに食べ物を要求した。)
これは次のように書き換えられます。
He had hardly arrived when he asked for food.
He had scarcely arrived before he asked for food.

これらの文は直訳的な意味(要求するよりも早く着かなかった、要求した時にはほとんど着いていなかった、要求する前にはほとんど着いていなかった)に解されることはなく、As soon as he arrived, he aked for food. と同じ意味にとられます。
ここで hardly, scarcely のような「頻度、程度」を表す副詞は「一般動詞の前、助動詞、be の後」に位置します(なぜこれらの副詞がこの位置に来るかと問われれば、こればかりは英語の習慣だからとしか言い様がありません)。soon はもともと「間もなく」という意味なので通常は文末に来ますが、no sooner ~ than の慣用表現においてはもはや本来の意味から離れて、「頻度、程度の副詞」に準じた扱いを受けるため、「一般動詞の前、助動詞、be の後」に位置して使われます。

1番さんの回答の中で

>「no sooner ~ than」は「hardly (scarcely) ~ when (before)」 と同じ意味でつかわれ、
<主語+no sooner+動詞 ~ than+主語+動詞>
という形をとります。

とありますが、ここにヒントがあります。

He had arrived sooner than he had been expected.
(彼は思ったより早く着いていた。)
比較を外すと
He had arrived soon.
普通、副詞は文末に来るのでこの語順です。

He had no sooner arrived than he asked for food.
(彼は着くとすぐに食べ物を要求した...続きを読む

QRun-Time Check Failure #3というエラーが出ます。

//Run-Time Check Failure #3 - The variable 'Data' is being used without being defined.
//というエラーが出ます。どうしたらいいですか?
//プログラムの内容は、数値を格納するときに、二分木構造で格納していくというものです。
//多分違うような気がしますが、、
//よろしくお願いします。
#include<stdio.h>

struct DATA
{
DATA *Small;
DATA *Large;
int Number;
};
void InputData(DATA *Dat,int num)
{
if(Dat==NULL){Dat=new DATA;Dat->Number=num;return;}
if(Dat->Number<num)
{
Dat->Large=new DATA;
Dat=Dat->Large;
InputData(Dat,num);
}
else if(Dat->Number>num)
{
Dat->Small=new DATA;
Dat=Dat->Small;
InputData(Dat,num);
}
return;
}
int main()
{
DATA *Data;
InputData(Data,20);//<-ここでエラーが出ます。
InputData(Data,10);
InputData(Data,30);
return 0;
}

//Run-Time Check Failure #3 - The variable 'Data' is being used without being defined.
//というエラーが出ます。どうしたらいいですか?
//プログラムの内容は、数値を格納するときに、二分木構造で格納していくというものです。
//多分違うような気がしますが、、
//よろしくお願いします。
#include<stdio.h>

struct DATA
{
DATA *Small;
DATA *Large;
int Number;
};
void InputData(DATA *Dat,int num)
{
if(Dat==NULL){Dat=new DATA;Dat->Number=num;return;}
if(Dat->Number<num)
{...続きを読む

Aベストアンサー

とりあえず、題名のエラーに付いてですが、
それは、mainの中での初期値を設定していない為に、
変数に不定値が入っていた為に起こった現象です。

で、#2に付いての質問ですが、まずは、main関数での宣言の
DATA *Data ;
は、アドレスを格納する変数と言うことです。

また、InputData関数の引数の
DATA **Datに付いては
アドレスを格納する変数のアドレスを引数とするという事です。

ですから、質問時のInputDataの引数の
DATA *Datでは
Datと言う変数のアドレスを受け取ると言うことで
アドレスを格納する変数では無く、実体(値)を格納する変数となります。

で、#2のようにDATA **Datとすると *Datのアドレスを
受け取ると言うことになり、アドレスを格納する
変数と言うことに成ります。
(引数で記述するのはあくまでも変数宣言と同等です。)

以上が今回のエラー及びプログラムの間違いです。
(説明が下手で申し訳ありませんm(_ _)m)

詳しいアドレス及びポインタに付いては、C言語の
書籍にポインタに付いて記述されていると思いますので
探してみてください。

でも、ポインタに付いて詳しい説明をしている書籍って
・・・本1冊分になるような気がする(汗

それと、余計なアドバイスに成りますが、
ローカル変数とグローバル変数の違いもお勉強されると
良いかもしれませんね。
ローカル変数は、宣言するだけでは初期値は不定とかね。(だから、必ず初期化が必要なんです。)
そうすれば、今回のエラーの意味もすぐにわかると思います。

これも、余計な事かもしれませんが、#2の
お礼の部分に記述してあるプログラムに付いてですが、
せっかくですから、InputDataの中でデータと
データの間に挿入すると処理を追加すれば、
DATA *Top;
DATA *TopTmp;
をmainで使用しなくても動作すると思います。

では、頑張って見て下さい。

とりあえず、題名のエラーに付いてですが、
それは、mainの中での初期値を設定していない為に、
変数に不定値が入っていた為に起こった現象です。

で、#2に付いての質問ですが、まずは、main関数での宣言の
DATA *Data ;
は、アドレスを格納する変数と言うことです。

また、InputData関数の引数の
DATA **Datに付いては
アドレスを格納する変数のアドレスを引数とするという事です。

ですから、質問時のInputDataの引数の
DATA *Datでは
Datと言う変数のアドレスを受け取ると言うことで
アドレ...続きを読む

Q「一点er」ですよね?

「一点er」と思われる問題です

如果 ni 多 mai , 还 能 再 便宜 点
ruguo n? duo mai , hai neng zai pianyi dian

拙訳:
多く買ってくれるなら、少し安くしましょう

の例文ですが、
この「点」って「一点er」ですよね?
形容詞+「一点er」の語順だと思うので…

erも省略って珍しいですね
er化で省略できるものと、できないものもあり、「一点er」は省略できたんだなあと

と、これくらいの疑問なら自己断定して解決しますが、
一応、聞いてみました!!苦笑

Aベストアンサー

erがつかない方が多いのでは無いでしょうか?

QVC++6.0 Stack Overflow !!

私はVC++6.0で画像処理のプログラムを作っています。
再帰構造を用いたある関数を呼ぶと、対象の画像によって、スタックオーバーフローでプログラムが止まってしまいます。

これを避ける方法や、スタックのサイズの変更方法がありましたら教えてください。

なお、現在、VC++のメニューの「プロジェクト」→「設定」→「リンク」タブ→「アウトプット」カテゴリからスタックアロケーションの予約のところを適当な大きな数を入力しているのですが、効果はありません。

Aベストアンサー

実際の実行時の再帰の段数は調べました?
あまり深いようなら、論理の再設計したほうが性能面での改善も得られ、一石二鳥かと。

浅い段数で潰れるなら、auto変数から static変数やHeap領域への転換を評価してみては?

QNo sooner

Bob had no sooner come here when it rained.

ボブがきてすぐ雨が降った
とうことですが、
no sooner の役割が考えれば考えるほどわからなくなります。
意味的には no sooner は just に置き換えられそうですが、なぜ no sooner なのかわかりません。

Aベストアンサー

S had no sooner 過去分詞 than 過去で「…してすぐ,~した」という決まった表現です。

no +比較級というのは,
比較級を強めに否定し,
「決してより勝っていることはない」という意味合いで,
結局言いたいことは,「勝っているのでなく,同じくらいだ」ということです。

ある時間から見て,
Bob had come が行われる時間と,
it rained が行われる時間を比べると,
過去完了になっている分,
Bob had come の方が早いのですが,
no sooner にすることにより,
「早いなんてとんでもない,同じくらいだ」
ということになり,
「ボブがきて,すぐに雨が降った」となります。

ただ本来は,no sooner の後は than it rained のように than となるはずです。比較級なので。

hardly ~ when でも同じ意味になることから,錯覚による言い方だと思います。

辞書とかにも載っていませんが,検索してみると使われているようです。非標準的にも思えますが。

S had no sooner 過去分詞 than 過去で「…してすぐ,~した」という決まった表現です。

no +比較級というのは,
比較級を強めに否定し,
「決してより勝っていることはない」という意味合いで,
結局言いたいことは,「勝っているのでなく,同じくらいだ」ということです。

ある時間から見て,
Bob had come が行われる時間と,
it rained が行われる時間を比べると,
過去完了になっている分,
Bob had come の方が早いのですが,
no sooner にすることにより,
「早いなんてとんでもない,同じ...続きを読む

Qコンパイルすると error C1083 が出てしまいます

 -スペック-
Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
以下のプログラムを実行すると、error C1083: include ファイルを開けません。'myhelper.h': No such file or directory

っていうエラーが出ます。
----------------------------------------------------------------
 -プログラム-
 - mymain.cpp の中身 -
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}

 - mymain.h の中身 -
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();

 - myhelper.h の中身 -
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;

myhelper.h はコピペなので間違ってはない。
----------------------------------------------------------------
まだC言語初心者なので、どのようにすれば直せるのかわからないので
詳しくお願いします。

一応サイトで検索などをして、自分なりに調べてきて
定義が間違ってないかを見ましたけどそれでもまだわかりません。


それでは宜しくお願いします。

 -スペック-
Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
以下のプログラムを実行すると、error C1083: include ファイルを開けません。'myhelper.h': No such file or directory

っていうエラーが出ます。
----------------------------------------------------------------
 -プログラム-
 - mymain.cpp の中身 -
#include "myhelper.h"
#include "mymain.h"

//...続きを読む

Aベストアンサー

画像、わかりやすいねぇ、便利な世の中だ。

エクスプローラで、"...\my"っていうフォルダの中身が見えてるけど、その中には、"myhelper.h"が無いね。このファイルを見つけて、"...\my"フォルダに移動かコピーしてみるか、myhelper.hのあるフォルダをインクルードサーチパスに追加する。で、解決したらいいな。

sakana20zbさんは、書きました:
> >mymain.cppと同じところにmyhelper.hがありますか?
> 同じファイル内にありますね。

同じフォルダには無いみたいに見えるなぁ。myhelper.cppはあるけどmyhelper.hは無い。回答No1.bardfishさんのアドバイスと同じだから、もう一度読んで確認してごらん。

Magna

Qドイツ語のerの発音について

erの読み方について分からないので教えて下さい。

Schlossbergはシュロスベルグでerは「エル」

derはデアーでerは「エアー」

Mutterはムターでerは「アー」

ですよね?
どういう時にどれで読めばいいのか分からないので教えて下さい。

前にも同じような質問がありましたがよく分からないので、新しく質問させていただきます。

Aベストアンサー

tlsmさん ドイツ語の”er"は日本語の "アー”ではありません、単語の最後に来るとそのように気こえますが。No.1 の方が言われておられるとおりです。
ゆっくり丁寧に発音すると”e" と "r"が別々になります。 ”エr”のように。それを早く言うと、いわゆる”r"の母音化が起きます。私は、”Berg"の場合、普通の話し方では"ベァk”ぐらいに発音しているように自分では思います。然し、一語一語丁寧に発音するときは、”べrrk”のように言っているようです。
”r"は巻き舌か"のどびこ”を震わせえるものどちられも良いでしょう。文字で外国語の発音を説明することは100%無理です。ドイツ語の発音が聞けるHPが幾つもありますので耳を澄ませて何回も聴かれることをお勧めいたします。できたら、貴方の発音をドイツ語を母語とするかそれに順ずる人に聴いてもらって、コメントをもらうことです。
ドイツ語の”er"を特に語尾の場合、 アメリカ英語の”er"と混同しないようにしてください。”r"があることを意識するべきです。

Qコンパイルに失敗しました、と出て実行出来ません

学校のC言語の講義で
http://www.soci.ous.ac.jp/~kuroda/
http://www.soci.ous.ac.jp/~kuroda/second_semi2009/c_pro/weekly_quiz/7th/prog071.zip
先生のHPからC言語ファイルをダウンロードしてから実行するのですが、CPad for Borland C++Compilerでコンパイル+実行を選ぶと「コンパイルに失敗しました、ファイル~~~(実行するファイルです).exeは存在しません。
と出てしまって実行することが出来ません。

どうすれば実行出来るでしょうか?
ご存知の方がおられましたら、よろしくお願いします。

Aベストアンサー

ダウンロードしたファイルをそのままコンパイルしてる?
途中が[ 1 ]のように空欄になってるから,適当に自分で文を書いてからコンパイルするんだよ。

QERのNHK総合での再放送。

総合 2005年3月19日(土)深夜でER8の再放送が終わってしまいました。

ER9は2005年3月21日(月)BS2で放送していたのが終了し、
ER10が3月28日(月)からBS2で始まるようです。

総合でER9は始まるのでしょうか?
日にちとかは決まってますか?
ご存じの方お願い致します。

Aベストアンサー

回答とはちょっと違うかもしれませんが、放送がないのはがっかりです・・・。

ただ、ちょっと聞いた話ではER8の放送がなくファンの人達から苦情?がきた為、放送されたようです。
なので、もしかしたら今回もそうなるのでは?と、ちょっと期待しているのですが・・・。

韓国ドラマは嫌いではありませんが、ERの時間はそのまま残して欲しいですよね。

Qerror C2065: error C2057: が出てしまいます。

VC++6.0 ダイアログベースです。

自動で作られたダイアログのヘッダファイルを
自作で作ったクラスのヘッダファイルでインクルードした所
下記のようなエラーが出てしまいました。
  
error C2065: 'IDD_MY_DIALOG' : 定義されていない識別子です。
error C2057: 定数式が必要です。
  
まだ自作で作ったクラスはクラスになる前のインクルードのみ書かれた
状態ですが・・・。
    
//自作する予定のヘッダファイル(まだインクルードのみ)
#pragma once
#include "DLGTEST.h"//自動で作られたダイアログ

//自作のファイル(まだインクルードのみ)
#include "stdafx.h"
#include "gakusei.h"
  
自動で作られたファイルをインクルードすることは出来ないのでしょうか?
もしインクルードできるならどのようにしたらインクルードできるのでしょうか?
オンラインマニュアルで調べたのですが、良くわかりませんでした。

/**オンラインマニュアルより、解決方法**/  
stdafx.h からの VC_EXTRALEAN 行を定義する 1 つソリューションが#を削除できます。
これは、通信とレジストリとほかのエリアの MFC によってプロジェクトで直接が使用されない Win32 API を保持します。
含められない代替は、#のセットでの行が「#が VC_EXTRALEAN を定義するのを」置き換えるために、
上記で一覧された行を定義しこと、そしてハードウェアがそれその#が定義する削除によって選択的に登録されこと、です。
たとえば 通信 API が呼び出される場合、#がすべて上記で stdafx.h に「#が NOCOMM を定義すると、」行の以外、
一覧された行を定義するのを持つ可能性があります。

VC++6.0 ダイアログベースです。

自動で作られたダイアログのヘッダファイルを
自作で作ったクラスのヘッダファイルでインクルードした所
下記のようなエラーが出てしまいました。
  
error C2065: 'IDD_MY_DIALOG' : 定義されていない識別子です。
error C2057: 定数式が必要です。
  
まだ自作で作ったクラスはクラスになる前のインクルードのみ書かれた
状態ですが・・・。
    
//自作する予定のヘッダファイル(まだインクルードのみ)
#pragma once
#include "DLGTEST.h"//自動で作...続きを読む

Aベストアンサー

#include "resource.h"
を作られたファイルに書けば大丈夫です。
リソースIDは上記ファイルに書かれています。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング