关于一个结构定义的问题,郁闷了好久,请大家帮帮忙 字节对齐的原因.加#pragma pack(1) 试下. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然加这个#pragma pack(1)不是很好,最好还是你自己调整结构吧. 结构体有字节对齐的加个#pragma pack(1) 试试 #pragma pack(1)typedef struct arphdr{unsigned char arp_sha[6];unsigned long arp_spa;}ARPHDR,*PARPHDR;#pragma pack() 说错了,呵呵unsigned long,4个字节。 没有影响吧,发送端这样拷贝memcpy(sendbuf,&arp,sizeof(arp)); 接收端再这样拷贝memcpy(&arp,recvbuf,sizeof(arp)); 是没有问题的啊 VC编译时默认把结构中的成员按照8字节来对齐,以免数据跨越8字节边界影响存取效率。你的结构中arp_sha[6]是6字节,编译时在后面自动留出了两字节,然后才是arp_spa,因为Debug版会把数据全部初始化为0xCC,所以你看到多出两个CC。这种编译方式通常是不影响程序正常运行的,不要管它。 release版的应该不做填充。 不应该是这样的。Release版的更注重执行效率,因此进行字节对齐的可能性更大,而不是更小。 使用该结构的之前memset一下就可以了。 请教一个查找窗口句柄的技巧 在group box里放一个list box控件,为什么老被group box当住呢? 一个链接错误 点击菜单上的“新建”按钮就出错! 如何保护一段代码不被中断? VC自带的InstallShield的问题,请高手赐教!!!!急 如何将一幅彩色位图转化成灰度图 切开下载 如何通过http代理访问https(socket与openssl配合) 有关动态链接库的问题! 请教,mpeg4的视频文件写成AVI格式,怎么写呢。视频数据直接写到movi块中么?(附:我用WINCE,没有AVI。。。之类的API) moveto函数中使用double
#pragma pack(1)
typedef struct arphdr
{
unsigned char arp_sha[6];
unsigned long arp_spa;
}ARPHDR,*PARPHDR;
#pragma pack()
发送端这样拷贝
memcpy(sendbuf,&arp,sizeof(arp)); 接收端再这样拷贝
memcpy(&arp,recvbuf,sizeof(arp)); 是没有问题的啊
Release版的更注重执行效率,因此进行字节对齐的可能性更大,而不是更小。