为什么同一结构体在不同程序下长度不同??
先上程序:
struct CeilBlockInfo
{
unsigned char type;
long x;
long y;
long begin;
int span;
};
按照字节对齐的优化计算方法,其长度应该是:8+4+4+4=20;
但是在我的另一个程序中计算的结果却是18!百思不得其解。。。。
两个程序都运行在WIN7环境下,但一个是MFC,一个是控制台程序。通过VS2010编译。。。
声明均为全局声明。
有人遇到相同情况吗???
struct CeilBlockInfo
{
unsigned char type;
long x;
long y;
long begin;
int span;
};
按照字节对齐的优化计算方法,其长度应该是:8+4+4+4=20;
但是在我的另一个程序中计算的结果却是18!百思不得其解。。。。
两个程序都运行在WIN7环境下,但一个是MFC,一个是控制台程序。通过VS2010编译。。。
声明均为全局声明。
有人遇到相同情况吗???
...全文
相关推荐
vc结构体数组长度计算
定义自定义类型的数组时,时常出现所占字长不一致的情形,需要用此办法解决
结构体中最后一个数组长度为零
在Linux系统里,/usr/include/linux/if_pppox.h里面有这样一个结构: struct pppoe_tag { __u16 tag_type; __u16 tag_len; char tag_data[0]; } __attribute ((packed)); 最后一个成员为可变长的数组,对于TLV(Type-Length-Value)形式的结构,或者其他需要变长度的结构体,用这种方式定义最好。使用起来非常方便,创建时,malloc一段结构体大小加上可变长数据长度的空间给它,可变长部分可按数组的方式访问,释放时,直接把整个结构体free掉就可以了。
结构体内存对齐,补齐的判别与结构体长度的计算
c/c++中结构体申请内存对齐,补齐的判别与结构体长度的计算
c++中关于结构体长度的计算问题.pdf
c++中关于结构体长度的计算问题.pdf
结构体中数组成员赋值
用实例教你给结构体中数组成员赋值


