C语言中结构体内存分配机制

原创 2015年07月10日 10:42:38

C语言中结构体内存分配机制

内存分配遵循的原理:

(1) :分配的内存空间的大小必须是4的倍数

(2):在结构体中每一个类型类型说明符(char,int,float,double,long)分配的内存空间的大小与类型说明符最大的字节保持一致(例如:结构体中字节最长的类型为long,则每一个类型分配的内存都和long保持一致).

(3):若分配的内存空间比当前的类型的字节大,则后面的类型补上(若后面的为int类型,则int在能被4整除的地址空间进行补上).

直接通过例子来说明:


//结构体

typedef struct Student{

    long Age;

    char sex;

    float Score;

    char s;

    int d;

    

}Student;


上面的结构体分配的内存空间为 24个字节

(1) 首先long分配8个字节空间存储long型变量,
(2) 接着为char分配8个字节空间,但char类型只占一个类型空间
(3) 所以还会剩余7个字节空间,则剩余的字节空间由float类型变量补上,在能被4整除的地方补上,
(4) 再为char类型的变量分配8个字节
(5) 剩余的字节在第四个字节空间由int类型的变量填充





版权声明:本文为博主原创文章,未经博主允许不得转载。

定义结构体与分配内存

这几天在学习数据结构的时候经常会出现一个问题,就是定义了节点的结构,然后定义了指向节点的指针,但是已经定义了指针为什么就不能直接用呢,后来查了一下相关资料发现原来在新建指针的时候不会一同分配内存给他,...

结构体的内存分配

假设这台机器 sizeof(char) = 1   sizeof(int) = 4    sizeof(double) = 8 枚举类型只为最宽的数据分配内存,在不同是时候,用的是同一块内存; ...
  • liuhuiyi
  • liuhuiyi
  • 2012年05月06日 09:32
  • 11186

结构体的内存分配问题

最近对C语言中的结构体分配问题做了一些功课,总结一下,有错误的地方欢迎大家指正。 大家都知道结构体中 char 偏移量必须为sizeof (char)即 1 的整数倍 int 偏移量必须为siz...

结构体定义、结构体指针、内存分配、指针、结构体形参的深入理解

/*********结构体定义、结构体指针、内存分配、指针、结构体形参的深入理解****  作者: 攀枝花学院 袁伟明  邮箱:1040185409@qq.com  说明:此程序为深入学习数据结...

结构体内数据变量内存分配详解

原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字...

C语言结构体内存空间分配

首先来说如果结构体的内存是按照便捷对齐的话,比如下图的这个结构体: 假如按照边界对齐要求的话,恐怕需要24个字节的存储空间。而short类型和charl类型却仅仅占了不到一个double八个...

【C语言】结构体存储与空间分配

1 结构体存储对齐 结构体占用的空间为结构体成员中,占字节最大的数据成员的空间的整数倍 比如: struct student{ char sex; int score; }; 最大长度为...

C语言中内存分配

在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的。因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题。 第1节主要介绍内存管理基本概念,重...
  • youoran
  • youoran
  • 2013年09月03日 15:50
  • 95549

C语言结构体分配内存问题

有些c语言的题很小,但是我们往往会忽略掉,面试的时候就会出这样的题比如,写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回...

C语言中结构体内存分配问题解析。

分析了编译器对结构体内存空间的分配
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言中结构体内存分配机制
举报原因:
原因补充:

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