2009-07-26 114 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爲我解決了這個問題。