完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、在C语言的运行过程中,需要内存来存储数据。C语言使用的内存总体可以分为两类:一类是静态区,一类是动态区。
2、静态数据存储区包含:只读数据区、已初始化的读写数据区、未初始化的读写数据区 动态数据存储区包含:栈内存区域、堆内存区域 3、C语言编写的程序经过编译-连接之后,将形成一个统一的文件,它由几个部分组成: 代码段(code或text)、只读数据段(RO data)、已初始化读写数据段(RW data)、未初始化读写数据段(BSS)、 堆(heap)、栈 (stack) 4、代码段 由各个函数产生,函数的每一条语句最终都生成机器码,例如普通的数学运算、条件语句、循环语句 5、只读数据段 由程序使用的数据产生,该部分数据的特点是不需要修改,因此被放入只读部分,例如: 只读全局变量 const char a[10] = "hello!!!"; 只读局部变量 const char str[8] = "world"; 程序中使用的常量 printf("ni hao cn"); "ni hao cn"就被放入只读数据区 6、读写数据段 又称为已初始化数据段,它里面的变量可读可写,例如: 已初始化的全局变量 int a = 10; 以初始化的局部静态变量,在函数体内定义 static int num = 10;7、未初始化数据段 该段的数据没有初始化,它只在目标文件中被标识,并不会称为一个真正的段。只有在程序运行的初始化阶段才会产生,因此不会影响目标文件大小 7、栈 只在程序运行的过程中出现,在函数内部使用的变量、函数的参数以及返回值将使用栈空间 栈的特点是先进后出 栈的增长方式有2种:一种是向上增长的,即从低地址向高地址增长;一种是向下增长的,即从高地址向低地址增长。目前绝大多是系统是递减的 根据栈的指针位置又可以讲栈分为满栈和空栈。 按照满栈的处理情况:入栈的时候,入栈内容放在栈指针移动后的内存地址;出栈的时候,将弹出当前栈指针地址的内容 按照空栈的处理情况:入栈的时候,入栈内容放在当前栈指针的内存地址中;出栈的时候,将弹出栈指针移动后地址的内容 8、堆 只在程序运行的过程中出现,一般由程序员分配和释放 |
|
相关推荐 |
|
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 15:55 , Processed in 0.575539 second(s), Total 49, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号