我有一個複雜的錯誤。該軟件將PrintParamters發送給打印機幾次。在某個時刻,參數結構的所有QStrings都被破壞(壞ptr)爲什麼QString在struct中有時是bad-ptr?
Structs中是否存在QStrings的一般問題?
這裏是我使用的結構:
typedef struct RecorderPrintParam {
ES_DataType xxxxxxxxxx;
bool xxxxxxxxxxx;
bool xxxxxxxxxxxx;
bool xxxxxxxxxxxx;
int xxxxxxxxxxxxxxxxxxxxxx;
double xxxxxxxxxxxxxxx;
double xxxxxxxxxx;
bool xxxxxxxxxxx;
int xxxxxxxxxxxxxxx;
double xxxxxxxxxxx;
bool xxxxxxxxxxx;
bool xxxxxxxxxx;
double xxxxxxxxx;
QString xname;
QString yname;
QString anotherValue;
QString opername;
QString region;
QString application;
QString version;
AxisUnit axUnit ;
double axLenM;
double xxxxxxxx;
double xxxxxxxx;
int xxxxxxxx;
double xxxxxxxxx;
double xxxxxxxxx;
bool xxxxxxxxxxxxxxx;/
double xxxxxxxxxxxxxxx;
double xxxxxxxxxx;
bool xxxxxxxxx;
}RecorderPrintParam;
這裏是如何的結構是使用: 從GUI級稱爲:
void
MyDlg::UpdateRecorderPrintParameters()
{
RecorderPrintParam param;
....
....
param.xname = QString("abc def 123");
_recorder->setParam(¶m);
}
param.xname已經有一個不好ascii ptr! ? 我也嘗試使用just =「abc def 123」而不是= QString(「abc def 123」);但它的出現同樣的錯誤
這是通過setParam職能的樣子:
RecorderInterface::setParam(RecorderPrintParam *up)
{
....
...
if(up->xname.compare(_myParams.xname)!=0) _newHeaderPrint=true;
...
...
}
}
的XName仍具有在那一刻「8xname = {d = 0x08e2d568}」的地址,但xname.ascii有一個00000000指針
您還應該發佈顯示您如何使用此結構的代碼。例如它是動態分配的嗎? – Alon 2010-01-21 08:39:43
好的,我更新了我的帖子 – Christoferw 2010-01-21 08:51:18
基於這些信息的任何想法? – Christoferw 2010-01-21 09:15:47