LINUX GCC下sizeof内存情况分析
来源:互联网 发布:变成孤岛的蓝鲸知乎 编辑:程序博客网 时间:2024/06/09 16:07
情况:
#include <stdio.h>struct STR{double a;int b;int c;char d;};struct STR1{double a;char b;int c;};struct STR2{char a;double b;int c;};struct STR3{char a;double b;int c;char d;};int main(){printf("sizeof(struct STR)=%d.\n", sizeof(struct STR));printf("sizeof(struct STR1)=%d.\n", sizeof(struct STR1));printf("sizeof(struct STR2)=%d.\n", sizeof(struct STR2));printf("sizeof(struct STR3)=%d.\n", sizeof(struct STR3));return 0;}
输出结果:
gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)sizeof(struct STR)=20.sizeof(struct STR1)=16.sizeof(struct STR2)=16.sizeof(struct STR3)=20.
STR: 8+4+4+1=17,同时要求4的倍数,为20。
STR1: 8+1+3+4=16,其中char后面填充了3个字节,因为int必须是4字节对齐,同时16已经为4的倍数。
STR2: 1+3+8+4=16,同上。
STR3: 1+3+8+4+1=17,通STR,结果为20。
一般在VC上结果不同,
VC按照具体的对齐,例如char, double,则一定是16,以double的8对齐,但是GCC中最大以4字节对齐,即使用了
#pragma pack(8)也就是说,在GCC下pack命令只有小于等于4才生效。
同样也就有另一个问题,就是最终大小,在GCC中,要求是最大变量大小的整数倍,但是不超过4字节的倍数,但是VC中,是按照实际大小倍数。
- LINUX GCC下sizeof内存情况分析
- 分析linux下内存使用情况
- Linux内存占用情况分析
- Linux free命令分析内存使用情况
- sizeof arm-linux-gcc 编译
- linux下查看内存使用情况
- linux下查看内存使用情况
- linux下查看内存使用情况
- linux下查看进程内存使用情况
- linux系统下查看内存使用情况
- linux下查看内存使用情况
- linux下查看内存使用情况
- Linux下查看内存使用情况
- linux下查看内存使用情况
- linux下查看进程内存占用情况
- linux下查看进程内存使用情况
- linux下查看进程内存使用情况
- linux下查看进程内存使用情况
- 一致性哈希算法及其在分布式系统中的应用
- Java的synchronized关键字:同步机制总结
- 短线盈亏指标
- TEDxGuangzhou report
- Windows下控制台输出
- LINUX GCC下sizeof内存情况分析
- CPictureEx类实现GIF图片的缩放
- python __init__和__new__之间的区别
- C#+XNA开发游戏案例《重装坦克》
- C++类的大小求解须知
- linux python make 失败
- trace-clock-32-to-64.c 中synthetic_tsc 结构 设计分析初步
- PICC编译错误undefined symbo
- 修改tomcat项目的图标