嵌入式C编程 02_存储类型与内存管理课件.ppt

嵌入式C编程 02_存储类型与内存管理课件.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式C编程 02_存储类型与内存管理课件

存储类型和内存管理;课程安排; ;1、TEXT:保存指令代码、立即数等只读信息,函数地址就在该段中分配 2、DATA:保存已初始化全局变量、静态变量。其中又分为RODATA,保存字 符串常量等只读数据 3、BSS:记录未初始化全局变量、静态变量的标号的内存大 小,程序运行后为这里数据在DATA段分配内存并初始化为0 4、堆:保存临时动态分配内存 5、栈:保存临时静态分配内存;1、 2、 3、 4、;课程安排;;;;;1、局部变量: auto关键字修饰(可省略),定义在函数之内 栈上分配,临时生存期,作用在函数内 2、全局变量:慎用 带extern关键字修饰(可省略),定义在函数外 数据段分配,永久生存期,作用在模块间 其他模块的函数引用时习惯带extern关键字声明 3、静态局部变量: 带static关键字修饰,定义在函数之内 数据段分配,永久生存期,作用在函数内 4、静态全局变量: 用static关键字修饰,定义在函数之外 数据段分配,永久生存期,作用在模块内 ;;;;变量只能被定义一次,但可以被多次声明引用 1、auto:声明或定义自动变量,该关键字可省略 2、extern: 声明或定义外部存储变量 定义时关键字可省略 3、static:声明或定义静态变量 4、register: 声明或定义寄存器变量(已经很少使用) 告诉编译器,尽量把变量定义为寄存器变量,当CPU 无多余寄存器可用时,编译器自动将其作为自动变 量处理 ;课程安排; 在TEXT段(代码段)为函数体分配内存 函数名代表函数体的首地址 函数的生存期都贯穿整个程序执行期; 1、模块内(静态函数):非接口函数 只能被函数定义模块(文件)的函数调用 通常函数声明和定义都在源文件内 定义和声明函数时可用static关键字修饰,表示函数只在当前 模块使用(也可省略) 带static关键字修饰的函数不要在头文件声明! 2、模块间(全局函数):接口函数 能所有模块(文件)的函数调用 通常将函数声明在头文件,供其他模块引用 定义和声明函数时用extern关键字修饰(可省略) ;;课程安排;在数据段或者栈上分配内存属于静态分配方式 好处: 1、简单易用,内存分配和回收由系统自动完成 特点: 1、编译时必须明确变量所需要的内存空间 2、所需的内存空间过大,可能到时内存分配失败! ; ;如果需要的内存空间,要到程序运行时才能根据实际情况确定 或者需要分配一个大内存池 --这时可以用动态内存分配 动态内存在堆上分配,特点是需要手工分配,并且手工回收! ; ; ; ;上机实验

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档