还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
的片内存储器C内容大纲
一、语言基础回顾
二、什么是片内存储器
三、片内存储器分类
四、程序存储区C变量类型、变量声明、变内存结构概述、片内存储程序存储区、数据存储区代码段、常量段、静态区量作用域器定义、片内存储器特点、堆栈存储区
一、语言基础回顾C本节回顾语言中与内存管理密切相关的基础知识,为深入理解片内存C储器打下基础变量类型整数型浮点型用来存储整数,例如、、用来存储带有小数的数字,例如10-50等、等
3.14-
2.718字符型用来存储单个字符,例如、A b、等!变量声明数据类型变量名初始化123声明变量时,需要指定其数据变量名应遵循语言的命名规在声明变量的同时,可以对其C类型,例如、、等则,通常使用字母、数字和下进行初始化,即为其赋予初始int floatchar划线,且首字母不能是数字值变量作用域全局变量局部变量在函数外部定义,作用域为整个程序在函数内部定义,作用域仅限于该函数
二、什么是片内存储器片内存储器,又称主内存,是计算机系统中用于存储正在运行的程序和数据的内存它由半导体器件构成,可以快速读取和写入数据,并与紧密协作CPU内存结构概述程序存储区数据存储区用于存储程序代码、常量数用于存储全局变量、静态局据和静态变量部变量和动态分配的内存空间堆栈存储区用于存储函数调用过程中的局部变量、参数和返回值片内存储器定义内存概述片内存储器内存,也被称为主存储器,是计算机系统中用于存储程片内存储器是集成在芯片内部的存储器它与CPU序和数据的临时存储器它是直接访问的存储器紧密结合,提供高速访问数据和指令,减少数据传CPU CPU,速度快,但容量有限输延迟片内存储器特点速度快成本高易失性片内存储器直接与相连,无需片内存储器由于工艺复杂,成本较高片内存储器中的数据在断电后会丢失CPU经过其他设备,因此访问速度非常快,通常容量也较小,因此需要定期保存到硬盘等外部存储设备
三、片内存储器分类根据存储内容和访问方式的不同,片内存储器可以分为三大类程序存储区、数据存储区和堆栈存储区程序存储区存放程序代码的区域,如函数定存放常量数据的区域,如常量字义和变量定义符串和数值存放全局变量和静态局部变量的区域,具有较长的生命周期数据存储区全局变量静态局部变量在程序执行期间始终存在,只在定义它的函数内可见,其值可以在整个程序中访问但其值在函数调用之间保持不变动态内存分配在程序运行时根据需要分配和释放内存,用于创建数组、结构体和其他数据结构堆栈存储区函数调用过程栈帧结构栈区内存管理函数调用时,会将函数参数、局部变每个函数调用都会创建一个栈帧,用栈区内存管理是自动的,由编译器自量、返回值等信息压入栈中于存储函数执行过程中的相关信息动分配和释放内存
四、程序存储区程序存储区是用于存放程序代码、常量数据和静态变量的区域代码段常量段静态区存放编译后的机器存放常量数据,例存放全局变量和静代码,用于执行程如字符串字面量、态局部变量,其生序逻辑枚举类型值等命周期贯穿整个程序运行代码段存储位置可执行代码存放着程序的机器指令,即代码段中的指令是可执行的执行的代码机器代码,它们由编译器生CPU成只读属性代码段通常是只读的,以防止程序意外修改常量段存放常量数据程序执行效率常量段包含程序中不可修改的常量值,例如字符串字面量常量段通常位于内存的只读区域,提高程序执行效率和常量定义静态区存储全局变量和静态局部变量在程序运行期间一直存在在编译阶段分配内存空间
五、数据存储区全局变量静态局部变量动态内存分配定义在函数外部的在函数内部定义,在程序运行时,使变量,作用域是整使用关键字修用、等static malloccalloc个程序饰,仅在该函数内函数分配内存空间部有效全局变量定义特点访问在函数外部定义的变量称为全局变量全局变量在程序运行期间始终存在,全局变量可以在程序中的任何函数中,其作用域是整个程序即使程序执行到定义全局变量的函数访问和修改..之后,它仍然存在.静态局部变量生命周期作用域12在函数执行完毕后,不会仅在定义它的函数内部可被销毁,而是保留其值见内存分配3在程序开始执行时分配,在程序结束时释放动态内存分配堆内存函数malloc动态内存分配从堆内存中分配内存空间语言提供函数来分配内存空间,例如C malloc堆内存是一块更大的连续内存区域,程序可以根据需要向int*ptr=int*mallocsizeofint;系统申请和释放内存该代码分配了足够存储一个整数的内存空间,并将该内存地址赋给指针ptr
六、堆栈存储区堆栈存储区是程序运行时用来存放局部变量、函数参数、返回地址以及中间计算结果等数据的区域函数调用过程栈帧结构函数调用时,系统会为函数创建栈帧包含函数参数、局部变量、一个新的栈帧,将函数参数、局返回地址、保存的寄存器等信息部变量以及返回地址压入栈中,,用于管理函数的调用和返回函数执行完毕后,再将栈帧弹出函数调用过程参数传递1函数被调用时,实参的值被传递给形参函数执行2函数体内的代码开始执行,使用形参进行运算返回结果3函数执行完毕后,可能返回一个值,或者不返回值栈帧结构函数调用过程栈帧结构函数调用时,会创建一个新的栈帧来存储函数的局部变量每个栈帧都包含以下部分函数参数、局部变量、返回地、参数和返回地址址和函数调用者寄存器栈区内存管理先进先出自动分配12栈区内存遵循先进先出的函数调用时,系统自动分原则,后入栈的元素先出配栈空间,函数执行完毕栈后自动释放有限容量3栈区内存容量有限,过度使用会导致栈溢出错误内存分配注意事项局部变量与全局变量静态变量与动态变量局部变量在函数内部声明,仅在静态变量在程序运行期间一直占函数内部可见全局变量在函数用内存,而动态变量在程序运行外部声明,在整个程序中可见期间可以根据需要分配或释放内存局部变量与全局变量局部变量全局变量在函数内部定义的变量,作在函数外部定义的变量,作用域仅限于函数内部当函用域为整个程序,可以在所数执行完毕后,局部变量会有函数中访问被销毁静态变量与动态变量静态变量动态变量在程序编译阶段分配内存,整个在程序运行阶段分配内存,根据程序运行期间都保持不变需要进行分配和释放内存泄漏与越界访问内存泄漏越界访问程序申请了内存空间但忘记释放,导致内存空间被占用,访问超出变量或数组定义的内存区域,可能会覆盖其他数无法再次使用据,造成程序错误课后练习练习可以帮助你巩固所学知识。
个人认证
优秀文档
获得点赞 0