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类型的变量填充





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

相关文章推荐

C语言中结构体大小计算即存储分配

C中结构体占内存大小

结构体内部的成员是何时分配内存空间的?

昨天晚上发现一个很多菜鸟都会遇到的一个问题:结构体内部的成员是何时分配内存空间的? 示例: 程序代码:#include struct stu { int a; int b; };...

定义结构体与分配内存

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

结构体内存分配问题(转)

结构体内存分配问题(转) 1)sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用。 (2)终于搞懂struct结构体内存分配问题了,结构体中各个成员字节对齐遵循...

结构体的内存分配

假设这台机器 sizeof(char) = 1   sizeof(int) = 4    sizeof(double) = 8 枚举类型只为最宽的数据分配内存,在不同是时候,用的是同一块内存; ...

C语言struct内存占用问题

本文编辑整理自: http://hi.baidu.com/pine515/blog/item/28f41f496042e8ee83025c4e.html http://blog.sina.com....

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

分析了编译器对结构体内存空间的分配

C语言的内存的分配机制

C语言的内存的分配机制 指向字符串常量的指针和字符串数组在使用时是有区别的。 看下面两个函数 //执行通过,返回“hello world” char *PtrChar() {...
  • Rayxp
  • Rayxp
  • 2014-11-06 09:06
  • 304

C语言结构体内存对齐的问题

一。内存对齐 许多计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(al...

C语言的内存的分配机制

http://www.cnblogs.com/yezhenhan/archive/2011/11/16/2250476.html 指向字符串常量的指针和字符串数组在使用时是有区别的。 看下面两个函...
  • diy534
  • diy534
  • 2011-11-29 00:58
  • 1140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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