《2022年C知识点总结静态动态存储.docx》由会员分享,可在线阅读,更多相关《2022年C知识点总结静态动态存储.docx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -几个问题:局部变量和静态变量的储备即局部变量可以用类型相符的任意表达式来初始化,而全局变量和静态变量只能用常量表达式( Constant Expression)初始化;由于对它们的初始化是在编译阶段完成的;为什么不应返回指向局部 如多次调用函数, 为什么 b=3 递归函数的变量 n,有几个?变量的指针;都不再执行了?void fint n char * itoa fun if n0 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 16 页,共 18 页 - - -
2、- - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -fun; void aint i ifi=0 printfi has reached zeron; else printf “ i=%d n”, i; a-i; return; void main a1; / 或 fun; 分析方法:依据函数栈的分布写,或表格列出每一次的调用;例如:写代码估量 linux 下栈的最大值;一道大华笔试题递归函数的分析;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 17 页,共 18 页 - - - - - -
3、 - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -malloc free 的基本原理malloc 和 free 是 C标准库函数;在 linux 下, malloc 依据申请的内存大小不同,通过调用mmap 或者 brk 系统调用向操作系统申请内存; free 通过 munmap 或者 brk 系统调用,向操作系统返仍内存;free 如何依据用户供应的地址释放空间的:1、malloc 安排空间时,会额外安排4 个字节的内存,用于记录安排空间的大小以及标记是否被使用;在linux32 系统, malloc 安排空间大小为8 的倍数,尾部可以有填充
4、,最小安排16 个字节;malloc 返回的地址为8 的倍数;2、free 释放的空间前面提到, malloc 通过系统调用向系统申请内存;由于系统调用会有从用户模式到特权模式的代价;因此,malloc 申请后的内存,用 free 释放后,并不肯定立刻返仍给系统;通常释放的闲暇内存,先由 malloc 和 free 爱护的闲暇链表来记录;以备该进程将来的内存恳求(即,将来再通过 malloc 申请空间, malloc 会先到闲暇链表里查询是否已经有足够大的空闲内存,如有,把该内存地址返回,标记该内存已使用;如没有足够大的闲暇内存,再向操作系统申请; )细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 18 页,共 18 页 - - - - - - - - -