[解決済み] エラー「'std::length_error' what(): basic_string::_S_create Aborted のインスタンスを投げた後に呼ばれた terminate (コアダンプ)」を理解する"
2022-01-26 19:51:46
質問
そこで、私のエラーを紹介します。
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
Aborted (core dumped)
で、以下が私のコードです。
//Code removed
string generateSong(string list[], int num)
{
//Code removed
//Code removed
for (i = 0; i < num; i++)
{
output += list[i];
output += bone1;
output += list[i + 1];
output += bone2;
}
return output;
}
int main()
{
string list[9] =
{
//Code removed
};
//Code removed
return 0;
}
そのエラーの意味を知りたいので、修正方法を知りたいのです。 似たようなエラーの投稿をたくさん見ましたが、まったく同じものはありませんでした。 私は文字通りC++を始めたばかりで、これらの回答のどれもが、私がこれまでに学んだことを意味するものではありません。 見ての通り、これは曲を出力する簡単なプログラムです。 これは私が取っている授業のために文字列を練習するのを助けるためのものですが、私には全く意味がなく、本もあまり役に立ちません。 どなたか説明していただけませんか?
追伸:一応、g++でコンパイルはできますが、実行するとこのエラーが出ます(つまり、基本的にはコンパイルエラーではなく、実行エラーです)。
解決方法は?
この部分のコードが怪しい。
for (i = 0; i < num; i++)
{
output += list[i];
output += bone1;
output += list[i + 1]; // <--- here
output += bone2;
}
配列の長さは9なので、有効なインデックスは0, 1, 2, ..., 8の範囲です。繰り返し8回目に、指示された行は配列のインデックス9を読もうとしますが、これは有効ではありません。この結果、未定義の動作となり、あなたの場合、無効な文字列に関する誤解を招くエラーメッセージが表示されます。
どのような手順で修正するかはご自身で決めていただくとして、私はこれが直接的な原因だと考えています。
お役に立てれば幸いです。
関連
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません