C语言 结构体对齐

你说的曾经没有我的故事 提交于 2020-01-01 14:29:56
  1. 结构体本来应该占用1(char)+4(int)=5个字节,但是为了对齐,实际上占了1(char)+3(补充)+4(int)=8个字节
  2. 这是因为计算机读取数据时,一般标准化4个字节读取,为了节约时间,牺牲3个字符大小的内存,以空间换时间
#pragma warning(disable:4996)
#include <stdio.h>
struct test {
	char a;
	int b;
};

int main(int argc, char *argv[])
{
	struct test a = { 'a',1 };
	struct test *p = &a;
	printf("结构体内存空间:%d字节,起始地址:%x,结束地址:%x\n", sizeof(struct test),p,p+sizeof(struct test));
	system("pause");
	return 0;
}

在这里插入图片描述

参考:
https://www.jianshu.com/p/f47e1fadb78e

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!