《2022年C知识点总结静态动态存储 .pdf》由会员分享,可在线阅读,更多相关《2022年C知识点总结静态动态存储 .pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、几个问题:局部变量和静态变量的存储即局部变量可以用类型相符的任意表达式来初始化,而全局变量和静态变量只能用常量表达式( Constant Expression)初始化。因为对它们的初始化是在编译阶段完成的。为什么不应返回指向局部变量的指针。char * itoa() char str20; return str; 若多次调用函数, 为什么 b=3都不再执行了?fun() static int b=3; b+; 对 b 的初始化操作在编译时已经完成了。递归函数的变量n,有几个?void f(int n) if (n0) 精品资料 - - - 欢迎下载 - - - - - - - - - - -
2、欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 19 页 - - - - - - - - - - fun(); void a(int i) if(i=0) printf(i has reached zeron); else printf( “ i=%d n” , i); a(-i); return; void main() a(1); / 或 fun(); 分析方法:按照函数栈的分布写,或表格列出每一次的调用。例如:写代码估计linux下栈的最大值。一道大华笔试题递归函数的分析。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名
3、师归纳 - - - - - - - - - -第 17 页,共 19 页 - - - - - - - - - - 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 页,共 19 页 - - - - - - - - - - 文档编码:KDHSIBDSUFVBSUDHSIDHSIBF-SDSD587FCDCVDCJUH 欢迎下载 精美文档欢迎下载 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 19 页 - - - - - - - - - -