新手,送分,该如何处理
新手,送分定义一个结构体C/C++ codetypedef struct information{unsigned char ucSyncByte//1Bunsigned s
新手,送分
定义一个结构体
C/C++ codetypedef struct information{ unsigned char ucSyncByte;//1B unsigned short usErrorPayPriorPID;//2B unsigned char ucScrambAdaptationCounter;//1B}PIDInformation_t;PIDInformation_t stInformation = {0};
然后打印其类型
C/C++ codeprintf("PIDInformation_t = %d\n", sizeof(struct information));
C/C++ code结果是:6
很奇怪的结果,本来觉得应该是4B才对
PS:在Windows 下VC 6.0
[解决办法]字节对齐~~
[解决办法]http://topic.csdn.net/u/20120310/15/8af3c919-1a5c-4afa-8acc-b31faf58c7ea.html?98144
[解决办法]LZ,结构体有自动对齐功能,
对齐后字节数应该是 结构体中占最大字节数的变量的整数倍(大于4Byte的以4记)
[解决办法]内存对齐,参加我的博客
http://blog.csdn.net/kuzuozhou/article/details/7278555
[解决办法]多出的2B是真实存在的,只是没有数据。楼主静下心来看看我的博客就知道咋回事了。good luck
[解决办法]把最后那个unsigned char 移到前面去 就是4 了
多出来的是真实存在的 但是此时没有存储有意义的数据 这样做是为了访问数据的时候 更加高效 比如:把unsigned char 移动到前面去后,按两字节取值的话,可以一次取出这两个char 型的数据,减少一次访存