码迷,mamicode.com
首页 > 编程语言 > 详细

关于C/C++ 结构体字节的算法

时间:2015-08-11 23:45:17      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:c/c++ 结构体字节数计算

简简单单的答案,看例子。

本人机器64位,指针8字节;32位,指针4字节。


文件:sizeof.c

#include <stdio.h>

typedef struct SS{
    char    name[131];
    short   type;          
    int     size;          
    int     offset;        
    unsigned short     precision;            
    void    *data;                          
#if 0
}__attribute__ ((__packed__))AA;
#else
}ColAttr_t;
#endif
int main(int argc, char **argv)
{
   printf("%d \n", sizeof(AA));
    return 0;
}

看似 151字节(#if 1 即可看出,attribute 紧凑字节网络用),实际160字节。

答案:是按照8字节对齐的,因为void * 是8字节,去掉void * 最大是4字节,即按照4字节对齐


技术分享

分析:都是向 8字 节对齐。

    第一行,char cname[128]字节。

    第二行, 剩下3个字节和 short type ,组合占8字节。(一共占5字节,余3 放不下int类型)。

    第三行,int size和 int offset 组合占8字节。

    第四行,void * 由于64位占8字节。



本文出自 “自己简单总结” 博客,请务必保留此出处http://2714254.blog.51cto.com/2704254/1683780

关于C/C++ 结构体字节的算法

标签:c/c++ 结构体字节数计算

原文地址:http://2714254.blog.51cto.com/2704254/1683780

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