複雑なエラーが発生しました。ソフトウェアは PrintParamters をプリンターに数回送信します。ある時点で、パラメーター構造体のすべての QString が壊れています (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 があります !! ? また、 = QString("abc def 123"); の代わりに = "abc def 123" だけを使用しようとしました。しかし、発生するのは同じエラーです
setParam 関数は次のようになります。
RecorderInterface::setParam(RecorderPrintParam *up)
{
....
...
if(up->xname.compare(_myParams.xname)!=0 ) _newHeaderPrint=true;
...
...
}
}
xname にはその時点でまだアドレス "8xname = {d=0x08e2d568 }" がありますが、xname.ascii には 0x00000000 ポインターがあります