您的位置:首页 > 运维架构 > Linux

苏嵌嵌入式Linux实训 第六天

2020-07-14 06:34 134 查看

一 学习内容
1.函数
函数的三要素:函数名、形参、返回值。
函数名:命名(自注释性) 动词+名词。
函数参数:形参定义类型为实参类型。
传数组名:传一维数组名,用元素的指针;传二维数组名,用一维数组指针;传三维数组名,用二维数组指针;传指针数组名,用指针的指针。
传地址和传值:当只使用不修改实参变量的值,传实参变量名;func(实参变量名)。当使用即修改实参变量的值,传实参变量的地址;func(&实参变量名)。
2.内存管理
(1)物理内存管理:包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。虚拟内存管理:虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。
(2)常见的内存错误:内存泄露、内存碎片、内存空洞
(3)数据区:BSS段—通常是指用来存放程序中未初始化的全局变量的一块内存区域。数据段—通常是指用来存放程序中已初始化的全局变量的一块内存区域。代码段—通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。堆—是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上;当利用free等函数释放内存时,被释放的内存从堆中被剔除。栈—是用户存放程序临时创建的局部变量。在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的后进先出特点,所以栈特别方便用来保存/恢复调用现场。
(4)内存池(将使用多次malloc操作改变成只使用一次):malloc和free是成对出现,free的时候指针必须是malloc过的。
3.关键字
(1)register:修饰经常被访问的变量,它所修饰的变量,请求编译器的尽可能的将变量保存在cpu的寄存器中。这样有助于减少访存的时间,有助于程序的效率。
(2)static:static不仅可以修饰变量还能修饰函数,修饰变量的时候,能修饰局部变量和全局变量。修饰函数的时候,也是是这个函数只能在本文件里面调用,其它文件不能调用。
(3)extern:可以修饰函数,也需要标明函数返回值,以及参数的类型。
(4)const:修饰的变量名,是只读变量。
(5)typedef:为声明定义命名。
二 作业
(1)C语言中free函数是如何确定要释放多少内存空间的?
空间的大小记录在参数指针指向地址的前面,free函数通过这个记录确定。
(2)static什么时候使用?
无生命周期的用static,有生命周期的不用static。
(3)为什么要使用typedef给变量重命名?
1.提高代码的移植性。
2.起注释的作用。
3.方便简化变量的定义。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: