一个牛X的例子来计算结构体的sizeof

转载 2012年03月21日 22:47:43
 0 4 8
0 4 8
0 4 6
sizeof(E) = 16
sizeof(F) = 16
sizeof(T) = 14
sizeof(struct_taga) = 4
sizeof(struct_tagb) = 3
sizeof(struct_tagc) = 4
 
 --------------
 #include <stddef.h>
 #include <stdio.h>
 
 //package size defaults to 8
 struct E
 {   
     int i;   // size 4   
     short j;   // size 2   
     double k;   // size 8
 };
 
 #pragma pack(4)
 struct F
 {
     int i;   
     short j;   
     double k;
 };
 
 #pragma pack(2)
 struct T 
 {
     int i;   
     short j;   
     double k;
 };
 
 struct struct_taga
 {
     char i;
     short j;
 };
 
 #pragma pack(push, r2, 1)
 struct struct_tagb
 {
     char i;
     short j;
 };
 
 #pragma pack(push, 8)
 struct struct_tagc
 {
     char i;
     short j;
 };
 
 
 void main() 
 {  
     printf("%d ", offsetof(E, i));   
     printf("%d ", offsetof(E, j));
     printf("%d\n", offsetof(E, k));
     printf("%d ", offsetof(F, i));
     printf("%d ", offsetof(F, j)); 
     printf("%d\n", offsetof(F, k));
     printf("%d ", offsetof(T, i));
     printf("%d ", offsetof(T, j)); 
     printf("%d\n", offsetof(T, k));
 
     printf("sizeof(E) = %d\n", sizeof(E));
     printf("sizeof(F) = %d\n", sizeof(F));
     printf("sizeof(T) = %d\n", sizeof(T));
 
     printf("sizeof(struct_taga) = %d\n", sizeof(struct_taga));
     printf("sizeof(struct_tagb) = %d\n", sizeof(struct_tagb));
     printf("sizeof(struct_tagc) = %d\n", sizeof(struct_tagc));
 }

相关文章推荐

内存对齐的原理,作用,例子以及一些规划(中英文说明,适用sizeof结构体)

内存对齐的原理,作用,例子以及一些规划(中英文说明,适用sizeof结构体) 目录   题记  一  内存读取粒度   Memory access granular...
  • haiross
  • haiross
  • 2014年08月27日 17:04
  • 593

sizeof(结构体)和内存对齐

  • 2011年07月18日 21:58
  • 30KB
  • 下载

sizeof的详尽计算结构体字节数方法

sizeof的详尽计算结构体字节数方法   本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总...

计算结构体占用内存,sizeof,指针。

这几天有人问结构体占用内存的情况,

内存的字节对齐及结构体的sizeof计算

(1)什么是字节对齐 一个变量占用 n 个字节,则该变量的起始地址必须能够被 n 整除,即: 存放起始地址 % n = 0, 对于结构体而言,这个 n 取其成员中的数据类型占空间的值最大的那...
  • ff_tt
  • ff_tt
  • 2016年06月04日 10:55
  • 144

c/c++中使用sizeof计算结构体struct和类class的长度(字节)

前言 在默认情况下,为了方便对结构体内元素的访问和管理,当结构体内的元素长度都小于处理器的位数的时候,便以结构体内最长的数据元素为对齐单位,也就是说,结构体的长度一定是最长的数据元素的整数倍。如果结构...
  • hsd2012
  • hsd2012
  • 2016年03月24日 09:44
  • 2307

sizeof的详尽计算结构体字节数方法

原文:http://fancyxinyu.blog.163.com/blog/static/1823213662011102161752137/ Sizeof用法 本文主要包括二个部分,第一部分...

sizeof计算结构体大小(字节对齐)

引言:sizeof计算结构体的大小经常出现在笔试题中,接下来是对它的一些总结 1.计算结构体大小的准则 数据类型 32位机大小(字节) 64位机大小(字节) char 1 1 ...

c语言sizeof求结构体的大小

运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。...

C语言结构体 —— sizeof(struct)

这个内容也是很重要的一个,所以,这里对一些问题和规律做一个总结。 涉及到的几个概念: 内存对齐:      现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个牛X的例子来计算结构体的sizeof
举报原因:
原因补充:

(最多只允许输入30个字)