1、硬件(静态存储) VS 内存(动态存储)
2、为什么所有的编程都关注内存管理?--- 内存属于稀缺资源
3、编程过程中,内存管理主要做什么?---(防止内存泄露)
4、如何防止内存泄露?(用户自己管理、系统管理(GC:垃圾回收机制))
用户自己管理:缺点:对用户的要求比较高(良好编码习惯,经验值)
优点:开销小,实时性高
系统管理(GC:垃圾回收机制):优点:能够有效的防止内存泄露
缺点:开销大,实时性差,用户无法干预
5、C语言防止内存泄露方法:1、养成良好的编码习惯2、内存区域的划分(Linux虚拟地址空间) 3、动态分配内存的方式选择
6、检测内存泄露
内存池:(将使用多次malloc操作改变成只使用1次)
malloc/free是一个开销非常大的操作
预处理
1、预处理主要任务: 头文件展开 宏替换 条件编译
2、头文件展开 : #include<> VS #include""
<>:包含系统定义的头文件(/usr/include),搜索路径:/usr/include系统的头文件目录;
"":包含自定义de头文件,搜索路径:先在当前目录查找,再到系统的头文件目录查找;
gcc -l指定头文件第三方搜索路径;
3、宏替换:
A\宏语法:#define NAME Value
B\替换逻辑:傻瓜式式替换 注意事项:使用()解决运算符优先级的题 C\ 作用:定义常量(杜绝幻数)提高代码可读性 定义函数(宏函数):(用编译时间换内存空间)(用空间运行换时间:inline:修饰函数 c99支持 内嵌函数---把函数体的语句嵌到调用的语句 修饰的函数不能超过5行,不能存在