【发布时间】:2012-04-01 20:56:45
【问题描述】:
我有一个结构,其中包含几个字符串。
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;
如果我注释掉分配字符串的行,它运行良好。使用字符串分配,它会崩溃。我不知道为什么。
我现在已经注释掉了所有其他函数的内容,试图追踪可能导致建议的损坏的原因,但它仍然崩溃。我只剩下一个带有几个字符串和数字的结构,如果我为任何字符串赋值,它就会崩溃。
什么可能导致这种损坏?
edit 按请求添加导致崩溃的最少量实际代码。注释掉的部分被省略。
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 来测试和验证为其分配值是否正常工作,只要将字符串注释掉就可以了。在结构中使用任何字符串都会导致崩溃。
我不需要它们。我目前没有使用这些字符串,我将它们放在结构中,因为我打算稍后使用它们,但没有它们我可以完成相同的目的。现在我只想明白为什么。
【问题讨论】:
-
您没有编译时错误并且程序在运行时崩溃?
-
问题肯定出在其他地方。
-
可能崩溃不是由该行引起的,您的代码中的其他内容在 item1 内存位置写入了垃圾。
-
你能发布最小量的代码来重现崩溃吗?
-
我也有类似的问题,好像
string未初始化gist.github.com/2639351