2009-07-26 257 views
17

的意义当运行我的程序我得到这个错误:这是什么C++错误的std :: length_error

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

我知道你离不开的代码做很多,但我认为这是错误代码太深,无法复制所有内容。也许我可以弄明白,如果我明白这个错误的含义。 这是一个在错误的内存地址读写问题的标志吗?

有什么我可以做的,以获得更多关于我的程序问题的信息?

+0

你可以在你访问字符串的地方张贴一段代码吗? – 2009-07-26 04:18:43

+1

字符串不是问题。经过一些小的修改并添加了调试消息后,我得到一个真正的段错误;) – Janusz 2009-07-26 04:45:22

+1

除了凯文的答案:也许你做了一些计算,会导致负的字符串长度?由于字符串长度(通常)被存储为无符号值,因此负值将导致一个非常大的正值,它大大超过std :: string :: max_size()! – mmmmmmmm 2009-07-26 13:02:06

回答

0

这与VS2005调试模式错误。当我将其更改为发布模式时,一切正常。

那么,VC调试运行时导致这一切,就这样。

1

我知道这是一个老问题,但我遇到了同样的问题。 使用Linux和gcc。

反汇编函数在代码中显示了很多跳转,抛出异常的地方不应该存在。 最后,Clean Build为我解决了这个问题。