我有一個結構,其中包含一些字符串。爲什麼在一個struct中放入一個字符串會導致崩潰?
struct item {
string item_name;
int item_property_1;
double item_property_2;
}
後來我對它們進行初始化:
item item1;
item1.item_name = "Name of Item";
item1.item_property_1 = 5;
item1.item_property_2 = 10.0;
如果我註釋掉行分配的字符串,它運行良好。隨着字符串分配,它崩潰。我不知道爲什麼。
我現在已經註釋掉了其他函數的內容,這些函數試圖找出可能導致建議損壞的原因,並且它仍然崩潰。我只用一個字符串和數字來表示一個結構,如果我爲任何字符串賦值,它就會崩潰。
什麼會導致腐敗?
編輯通過請求添加導致崩潰的最小數量的實際代碼。註釋掉的部分被省略。
struct player_c {
string advClass;
int role;
};
player_c shadow;
Shadow::Shadow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Shadow)
{
ui->setupUi(this);
shadow.advClass = " ";
shadow.role = 1;
}
剩下的就是這些。我只包含int來測試和驗證,賦值它工作正常,只要字符串被註釋掉就行。結構中任何字符串的使用都會導致崩潰。
我不需要他們那裏。我目前沒有使用這些字符串,我把它們放在結構體中,因爲我打算稍後使用它們,但是如果沒有它們,我可以完成相同的目的。現在我只想了解爲什麼。
你沒有編譯時錯誤,程序在運行時崩潰? – 2012-03-16 10:03:52
該問題必須在別處。 – juanchopanza 2012-03-16 10:05:08
可能是崩潰是**不是由該行引起的,代碼中的其他內容會在_item1_內存位置上寫入垃圾。 – 2012-03-16 10:05:48