我有一个结构,其中包含一些字符串。为什么在一个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