Advertisement

C结构体对齐

阅读量:

一个结构体占用的空间并非其内部所有元素各自占用空间的简单总和;现代编译器通常会对这些架构执行相应的对齐优化策略;例如采用32位数据总线的芯片可能会实施4字节的数据对齐策略以提高数据传输效率

在结构体内同样存储了一个字符型字段、一个短整型字段以及一个整型字段,在这种情况下其占用空间数量为1 + 2 + 4 = 7字节。为了满足内存对齐的要求,在计算实际占用空间时必须考虑到4字节对齐的要求使得占用的空间必须是4的倍数。具体排列方式所占的空间大小则会有所不同。

复制代码
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void){
    	struct A{
    		char a;
    		int b;
    		short c;
    	}st_A;
    
    	struct B{
    		short c;
    		char a;
    		int b;
    	}st_B;
    
    	struct C{
    		char a;
    		short c;
    		int b;
    	}st_C;
    
    		printf("sizeofA:%d\n", sizeof(st_A));

全部评论 (0)

还没有任何评论哟~