我正在使用 Qt Creator 开发应用程序。
我不是一个好的 C++ 程序员,所以可能存在概念错误等。
我在复制结构数组并返回结构时遇到问题。
有很多与类似标题相关的解决方案,但无法解决我的问题。
这是我的代码:
ABC.h
typedef struct command_packet_struct
{
QString ItemDataName;
DATA_TYPE ItemDataType;
int ItemDataLength;
} COMMAND_PACKET_STRUCT;
class ABC
{
private:
COMMAND_PACKET_STRUCT* getHeaderTitle(int index);
COMMAND_PACKET_STRUCT *_packetStruct ;
};
ABC.cpp
COMMAND_PACKET_STRUCT _OA_Packet [] = {
{"ERROR\nMAIN CODE" , DATA_TYPE_NUM, 5 },
{"ERROR\nSUB CODE" , DATA_TYPE_NUM, 4 },
{"SCALE VERSION" , DATA_TYPE_ASCII, 8 },
{"E-PRE VERSION" , DATA_TYPE_ASCII, 8 }
};
COMMAND_PACKET_STRUCT* PCU_SIM_ORDER_TASK::getHeaderTitle(int index)
{
int maxSize;
if (_packetStruct != NULL)
{
_packetStruct = 0;
}
_packetStruct = new COMMAND_PACKET_STRUCT(*_OA_Packet);
maxSize = ((sizeof(_OA_Packet)/sizeof(COMMAND_PACKET_STRUCT)) - 1);
memcpy(_packetStruct, _OA_Packet, maxSize) ;
qDebug() << sizeof(COMMAND_PACKET_STRUCT); // return 12
qDebug() << sizeof(_packetStruct); // return 4
qDebug() << sizeof(_OA_Packet); // return 48
return _packetStruct;
}
上面的代码显示了我为结构数组所做的实现。
我需要复制结构数组
_OA_Packet
到
_packetStruct
但是当我尝试获取_packetStruct的大小时,它给出了4而_OA_Packet的大小给出了48
因此,当尝试显示结构的内容时,它会返回“segmentation fault error”
任何想法,建议?