"project2.exe has stopped working."
あいまいなエラーですが、実行時に確実に発生しています。あなたやあなたのプログラムのユーザーにとって役に立たないので、より良いエラー処理を実装する必要があります。
ベクトルを使用する場合、実行時エラーは通常、不適切な割り当て (std::bad_alloc
例外) と存在しないベクトル内の要素へのアクセス(例外) から発生しstd::out_of_range
ます。これらの例外をキャッチして、プログラムがクラッシュしたり、メモリ リークが発生したり、"project2.exe has stopped working."
エラー メッセージが表示されたりするのを防ぎます。
メイン関数に try-catch ブロックを配置することで、プログラムからすべての例外をキャッチできます。
int main(int argc, char *argv[])
{
try
{
// put all your code here
Heap<int> events;
}
catch (const std::exception& x)
{
// all std exceptions are caught here
std::cerr << x.what() << '\n';
}
}
コードに が含まれている場合、例外vector[subscript]
はスローされません。std::out_of_range
パフォーマンスを重視する必要がない場合はvector.at(subscript)
、例外がスローされるように置き換えます。
エラー処理によって問題が解決されるわけではありませんが、解決につながる重要なヒントが得られることを忘れないでください。また、デバッガーの使用を検討する必要があります。彼らは、どのコード行がプログラムの動作を停止させているかを教えてくれます。