私は、テキストファイルを読み込み、ファイル内の少数の行のベクトルを正常に返します。私はラインを処理する関数にこのベクトルを渡され、それはとても明らかに簡単な関数呼び出しで未処理の例外
Unhandled exception at 0x00267EF9 in Bridge.exe: 0xC00000FD: Stack overflow (parameters: 0x00000000, 0x00A82000). occurred
をエラーを投げたベンフォークトが指摘したように、おそらく明らかにすなわち、それを投げた機能とは何の関係もなかったスタックオーバーフローがありました
int LinesToCards(std::vector<std::string>& lines) {
int retval = -999;
return retval;
}
これは、サードパーティのDLLが必要とするライン
int main()
{
std::string cards[MAXDEALS][DDS_HANDS][DDS_SUITS] ;
int retval = -999;
retval = LinesToCards(lines);
return 0;
}
の#define DDS_HANDS 4を持っていたメインから呼ばれましたの#define DDS_SUITS 4 を変更することはできませんが、元の作業
#define MAXDEALS 999
は今、例外がスローされます。私がそれを減らすと、
#define MAXDEALS 890
に戻ります。私がそれまでに
#define MAXDEALS 891
それはクラッシュします。 16240と16256の間にいくつかのマジックナンバーがありますか?
呼び出し元があなたのスケルトン関数を呼び出していない場合は、呼び出し元関数ReadFileStableは万一ですか?無限再帰はスタックオーバーフローを説明するでしょう –
申し訳ありませんが、mainは両方を呼び出します。 ReadFileStableは、LinesToCardsによる処理のための入力行を取得するだけです。 – DLyons
あなたは、あなたが私たちに全体のプログラムを表示しない場合、あなたのプログラムの微妙な問題が何であるかを教えてくれません。 –