我有2个课程,
#define HEADER_SIZE sizeof(CHeader)
#define BODY_SIZE 5132
#define PACKET_SIZE sizeof(CPacket)
Class CHeader
{
BYTE a;
BYTE b;
long c;
long d;
}
Class CPacket : CObject
{
CHeader mHeader;
BYTE mBody[BODY_SIZE];
CPacket() { }
virtual ~CPacket() { }
}
在其他类的功能中,我有
void func()
{
BYTE mRcvData[PACKET_SIZE];
CPacket *packet = new CPacket();
memcpy(packet->mHeader, mRcvData, HEADER_SIZE);
}
mRcvData 是通过套接字从客户端接收的,所以我想将数据保存到 CPacket 实例中。为了首先将 mRcvData 的标头部分复制到数据包中,我使用了上面的“memcpy”功能,但它不起作用。
我的问题是,
首先,我怎样才能让它按我的预期工作?
二、CHeader Class 和 CPacket 中成员变量的地址是如何分配的?如果我像上面那样在“BYTE b”之后分配“long c”,“long c”的地址将是“BYTE b”+1?
我的意思是,我的逻辑是,例如,
Address of CHEADER Class : @ 1000
Address of variable "a" in CHEADER Class : @ 1000
Address of variable "b" in CHEADER Class : @ 1001 (because "a" consumes 1 byte)
Address of variable "c" in CHEADER Class : @ 1002 (because "b" consumes 1 byte)
Address of variable "d" in CHEADER Class : @ 1006 (because "c" consumes 4 byte)
这是真的吗?“CPacket 类”呢?