2

ノブはこちら。宿題を投稿するべきではないことはわかっていますが、何がこの問題を引き起こしているのかわかりません。何らかの理由で、この while ループは、終了する直前 (つまり、ファイルの終わりを読み取るとき) に std::bad_alloc 例外をスローします。8GB のシステムで 500 MB の RAM しか使用していないため、メモリの過剰使用ではないと確信しています。誰かが助けてくれたら、それは素晴らしいことです。なぜなら、私はこの問題を約 4 時間探し続けており、修正を見つけることができないからです。それはおそらくばかげたことですが、私には理解できません。

コードは次のとおりです。

temperatures_in >> low >> high;
tempMin=low;
tempMax=high;
getLocation(temperatures_in, location);

while(!temperatures_in.eof()){
    temperatures_out << left << setw(20) << location;
    temperatures_out << right << fixed << showpoint << setprecision(2) << setw(6) << low << setw(6) << high << endl;
    temperatures_in >> low >> high;
    getLocation(temperatures_in, location);
    if(low<tempMin){
        tempMin=low;
    }
    if(high>tempMax){
        tempMax=high;
    }
    cout << low << " " << tempMin << " " << high << " " << tempMax << " " << location;
}

また、デバッガーを実行すると、ループの内外で出力をテストし、ループの終了前にコードを実行するにもかかわらず、行 -1 で例外が何らかの形でスローされることが示されました (それは可能ですか?) 、しかし後ではありません。

編集: getLocation() 関数は次のとおりです。

void getLocation(ifstream &temperatures_in, string &location){
    char a;
    temperatures_in.get(a);
    while(a==' '){
        temperatures_in.get(a);
    }
    location="";
    while(a!='\n'){
        location+=a;
        temperatures_in.get(a);
    }
}
4

0 に答える 0