结构体在内存中的存储方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体在内存中的存储方式相关的知识,希望对你有一定的参考价值。

结构体在内存中如何存储?

遵循结构体对齐规则:

1.首先要知道默认对齐数:VS 中 8   Linux 4

2.第一个成员放到0偏移处

3.后面所有的成员都放到对齐数(本身和默认对齐数的较小值)的倍数处偏移

4.结构体总大小为所有对齐数中最大对齐数的倍数

Eg

技术分享

 

运行结果为 24

 

 图中可以看出内存有浪费,而我们将小的成员放一起可以节省资源 减少浪费。

上例可以改为:

 int i

char c

double d

这样总大小只需16 节省浪费。

 

空的结构体类型大小为1,创建对象需要开辟空间,开多了浪费,不开没法寻址,而内存的最小单位是一个字节,所以开1.

 

 

 

 

 

那么结构体为什么要对齐呢?

             技术分享

如图 红色方式读取b时需要读取两次

     绿色方式只需读取一次

     用内存来换取时间。


本文出自 “10910765” 博客,请务必保留此出处http://10920765.blog.51cto.com/10910765/1745792

以上是关于结构体在内存中的存储方式的主要内容,如果未能解决你的问题,请参考以下文章

C语言中结构体在内存中的存储方式?

Swift中结构体的方法调度&内存分区

结构体在内存中的存储(内存对齐)

结构体在内存中的对齐规则

RocketMQ内存分布

Visual Studio2008 C++结构体成员需要内存对齐吗?