web-dev-qa-db-ja.com

このC ++エラーstd :: length_errorの意味は何ですか

プログラムを実行しているときに、次のエラーが発生します。

terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_S_create
Abort trap

私はあなたがコードなしでは多くを行うことができないことを知っていますが、このエラーはコードの深すぎてすべてをコピーできないと思います。このエラーの意味を理解していれば理解できるかもしれません。これは、間違ったメモリアドレスでの読み取りまたは書き込みに関する問題の兆候ですか?

プログラムから問題に関する詳細情報を取得するためにできることはありますか?

21
Janusz

これは、std :: string :: max_size()より大きい文字列を作成しようとしたことを意味します。

http://msdn.Microsoft.com/en-us/library/as4axahk(VS.80).aspx

タイプlength_error Classの例外は、操作が最大サイズより長い文字列を生成したときにスローされます。

24
Kevin Doyon

これは古い質問ですが、同じ問題に遭遇しました。 Linuxをgccで使用する。

関数を逆アセンブルすると、コードに多くのジャンプが見られました。例外がスローされたはずの場所ではありません。結局、クリーンビルドで問題が解決しました。

1
Lukas Obermann

これは、VS2005のデバッグモードでのエラーです。リリースモードに変更すると、すべてが機能します。

まあ、これはvcデバッグランタイムが原因です。

0
Kouga