我從我的項目atm得到一些奇怪的錯誤和崩潰。奇怪的自發運行崩潰
它開始了崩潰,我得到這個消息:
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
於是我開始加入一些CERR < <「1」等,試圖找到它墜毀哪一行。
現在我發現了crash-line,雖然它不打印出相同的錯誤代碼。事實上,它什麼也沒說,只是崩潰。
導致崩潰的線路是這樣的:
Item* tempItem = new Item(name, id2, desc);
Item.h構造是這樣的:
Item(std::string name_, int itemId_, std::string description_ = "")
: name(name_), itemId(itemId_), description(description_){}
和變量我送的這個樣子的:
string name = "Frying pan";
int id2 = 1;
string desc = "It's all rusty";
有什麼想法? (如果你需要更多的代碼只是告訴我你需要什麼,我會在編輯)
編輯 一些更新的信息:
name.max_size() = 1073741820
name.length() = 9
desc.max_size() = 1073741820
desc.length() = 14
EDIT2 現在我已經嘗試過創建項目的對象有這樣施工前右硬編碼的變量值:
name = "itemName";
desc = "itemDesc";
id2 = 2;
,並在右邊線它仍然崩潰:
Item* tempItem = new Item(name, id2, desc);
調試器不會比在代碼中散佈'cerr'消息更簡單嗎? – Barmar
任何機會你負的長度傳遞給字符串構造函數? – billz
如果你嘗試創建一個字符串t(「something」,-1);你可以得到同樣的例外 – billz