zoukankan      html  css  js  c++  java
  • 内存对齐

    首先看一个简单的程序:

    #include<stdio.h>

    void main()

    {

       struct inner

       {

           char c1;

           double d;

          // char c2;

       };

       printf("the size of struct inner is :%d\n",sizeof(struct inner));

    }

    在Ubuntu10.04下用gcc编译输出结果为:the size of struct inner is :12

    去掉注释输出结果为:the size of struct inner is  :16

    char 类型占一个字节,double类型占8个字节,结果为什么不是9和10呢,原因是在开辟空间时存在内存对齐问题:linux下是以4字节对齐的,第一种情况下c1以4字节对齐,开辟4个字节的空间,d开辟8个字节,所以结果是12;第二种情况下(去掉注释)c1,c2以4字节对齐,分别为其开辟4字节空间,为c1,c2一共开辟8字节就可以了,d同样以4字节对齐,开辟8字节,所以结果就是16。

    个人浅见,如有不对地方请高手赐教。

  • 相关阅读:
    对老师的评价以及课程建议
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    关于matlab使用medfilt2报错
    Matlab中hold on与hold off的用法
  • 原文地址:https://www.cnblogs.com/276815076/p/1788171.html
Copyright © 2011-2022 走看看