首页  >   经验  >   关于结构体内存分配对齐深入理解

关于结构体内存分配对齐深入理解

查看 小烽烽 的博客 2015-06-26 14:54:00 1465
结构体   内存   分配  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介结构体变量占据的内存单元的个数应当大于等于其内部所有数据成员占据内存单元数的和。这句话学过结构体的都知道,但是这句话给很多初学者带来的误区(这句话本身没有问题,很多C语言书里面有这句话),但是有些人再用sizeof(struct a)求字节大小的时候就会发现问题
    比如:(32位系统下)
struct a
{
    int b;
    double c;
    char d[9];
};
void main()
{
    prinf("%d",sizeof(struct a));
}

    如果按照“结构体变量占据的内存单元的个数应当大于等于其内部所有数据成员占据内存单元数的和。”这句话来理解输出就是int占了4个字节,double占用8个字节,char定义一个数组占用了9个字节所以总用21个字节,但是结果不是这样。
    接下来我来解释一下原因:
    首先要知道出于效率的考虑,C语言引入了字节对齐机制,一般来说,不同的编译器字节对齐机制有所不
1.微信扫码
2.点击按钮,粘贴命令
自动刷新 手动刷新
命令:rd 9M4mE 复制
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:关于结构体内存分配对齐深入理解
文章地址:http://www.cjjjs.com/article/626201505414357
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:关于结构体内存分配对齐深入理解
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. C++ Primer Plus 6th 4.13 编程练习题 第9题 使用new动态分配数组 查找全网同类文章
  2. C++ Primer Plus 6th 4.13 编程练习题 第6题 结构体数组的初始化和使用 查找全网同类文章
  3. C++ Primer Plus 6th 4.13 编程练习题 第5题 结构体的声明、初始化和使用 查找全网同类文章
  4. C++ Primer Plus 6th 4.12 复习题 第15题 动态创建结构体变量 查找全网同类文章
  5. C++ Primer Plus 6th 4.12 复习题 第9题 结构体变量的声明并初始化 查找全网同类文章
  6. C++ Primer Plus 6th 4.12 复习题 第8题 结构体类型声明 查找全网同类文章
  7. c内存申请malloc的诡异 查找全网同类文章
  8. Linux系统内存不足守护者OOM Killer 查找全网同类文章
  9. Linux下高效的TCP编程内存泄漏内存错误检测调试流程 查找全网同类文章
  10. 如何实现内存自动管理? 查找全网同类文章
分享到:
分享文章[关于结构体内存分配对齐深入理解]到QQ空间

相关阅读

猜您感兴趣