码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-02-29 00:48:57      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:c语言中 结构体 内存 存储

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

遵循结构体对齐规则:

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语言中 结构体 内存 存储

原文地址:http://10920765.blog.51cto.com/10910765/1745792

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!