结构体默认的字节对齐一般满足三个准则:
-
结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
-
结构体每个成员相对于结构体首地址的偏移量(offset)都是成员自身大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
-
结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailing padding)。
http://www.cnblogs.com/bettermanlu/archive/2010/05/24/1743119.html
分享到:
相关推荐
结构体字节对齐规则,主要是介绍结构体字节对齐规则,内容有点长,但是很全面.
关于C语言中的结构体字节对齐问题,在《C与指针》一书中提到,但是似乎没有说清楚,还是我理解不完全?所以,根据书上和网上资料,总结一些关于C语言中的结构体字节对齐的知识。这里的讨论和代码,都在VS2010下,GCC...
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧.
我们先看看sizeof的定义——sizeof的结果等于对象或者类型所占的内存字节数,好吧,那让我们来看看S1的内存分配情况 S1 s1 = { 'a', 0xFFFFFFFF }; 定义上面的变量后,加上断点,运行程序,观察s1所在的...
C语言结构体的字节对齐原则[定义].pdf
结构体数据成员指针对齐,通过指针偏移给数据成员赋值。
结构体内存对齐原则,讲的非常详细,希望能给大家些帮助。
对于字节占用与对齐,excel表格中做了稍微修改,与12-27号版本比较,代码没有改动。
关于结构体的内存对齐关于结构体的内存对齐关于结构体的内存对齐
C语言结构体的字节对齐及指定对齐方式.docx
结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,对sizeof我们将在另一篇文章中...
写在前面的话最近有被问到:结构体怎么写占用内存小?很惭愧,当时没答到点子上 ~~呜呜呜结构体占用内存计算结构体中同样的变量个数,却可能导致占用内存的大小不同。直
关于gcc编译结构体的对齐说明
要求数据内存的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,本文就来深入剖析C++中的struct结构体字节对齐,需要的朋友可以参考下
这个压缩文件是用来查看一个结构体内存布局,是我在查看字节对齐的时候写出来的,内容很简单,但是分析结构体内存布局上还是对你有一定帮助
A:首先先不讨论结构体按多少字节对齐,先看看只以1字节对齐的情况: #include #include #define PRINT_D(intValue) printf(#intValue is %d\n, (intValue)); #define OFFSET(struct,member) ((char *)&((struct ...
C语言结构体内存对齐问题.pdf
C语言结构体内存对齐问题浅析
c/c++中结构体申请内存对齐,补齐的判别与结构体长度的计算