博客
关于我
C结构体内存对齐细节
阅读量:226 次
发布时间:2019-03-01

本文共 483 字,大约阅读时间需要 1 分钟。

内存对齐的细节和编译器实现有关,一般有三个原则:

1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;

2. 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如果有需要,编译器会在成员之间加上填充字节;

3. 结构体的总大小为结构体中最宽基本类型成员大小的整数倍,如果有需要,编译器会在最末一个成员之后加上填充字节。

ex :

struct  st{        uint16_t id; //2字节宽    uint32_t value; //4字节宽    uint64_t time; //8字节宽}

内存空间占用情况: 共占用16字节空间宽度


ex :

struct Date{    char a; //1字节    int b; //4字节    int64_t c; //8字节    char d; //1字节};Data data[2][10];

内存空间占用情况: 共占用16字节空间宽度

如果Data首地址为X,则data[1][5].c的地址是X+368.

 

参考文献:

【1】程序员面试笔试真题与解析

转载地址:http://zrzt.baihongyu.com/

你可能感兴趣的文章
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>
Metasploit Web服务器渗透测试实战
查看>>
MFC模态对话框和非模态对话框
查看>>
Moment.js常见用法总结
查看>>
MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
查看>>
mxGraph改变图形大小重置overlay位置
查看>>
MongoDB可视化客户端管理工具之NoSQLbooster4mongo
查看>>
Mongodb学习总结(1)——常用NoSql数据库比较
查看>>
MongoDB学习笔记(8)--索引及优化索引
查看>>