如何判断C语言结构体所占的内存大小

本文介绍了C语言中结构体所占内存的计算原理,包括变量在不同操作系统下的内存占用,以及内存对齐的概念和规则。通过对实例的分析,揭示了结构体成员按照各自对齐字节数和最大成员对齐方式排列,并且结构体长度必须是最大对齐参数的整数倍的内存对齐原则。
摘要由CSDN通过智能技术生成

1 预备知识

1.1 变量所占内存

(1)32位操作系统:

char : 1 int :4 short : 2 unsigned int : 4 long : 4 unsigned long : 4 long long : 8 float : 4 double : 8 指针 : 4

(2)64位操作系统

char : 1 int :4 short : 2 unsigned int : 4 long : 8 unsigned long : 8 long long : 8 float : 4 double : 8 指针 : 8

1.2 内存对齐

例1:
int main(void){
   char a;
   int b;
   int c;
   printf("a=%d\n",&a);
   printf("b=%d\n",&b);
   printf("c=%d\n",&c);
}

分析:char 所占1字节,int 所占4字节,假设起始内存为00000,那么a的起始地址为00000,b的起始地址00001,c的起始地址00005,总体所占内存大小为9字节。

在这里插入图片描述

通过编译(64b),可以看到a 的起始地址为6487583&

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值