1.free是如何知道释放多大内存的
其实真正的内存管理如申请/释放等,并不是由malloc或者free等库函数来负责的,而是交由操作系统去完成,它们只是维护一个空闲的链表式的内存块,理解这一点是问题的关键。例如:要申请sizeof(int)*100大小的内存空间,虽然返回的是内存大小是400,但实际上,操作系统分配时候,会多出一块用于存储内存大小的类似链表head头节点的东东,这个节点存储的是空间的首地址及分配内存的大小。当用户调用free函数的时候,其实它也不知道要释放内存的大小,它只需改变head头结点里的内存的大小就可以了,具体内存空间的释放由操作系统去完成
2.static在什么情况下使用
常用的方法,比如你有一个类叫做 DateUtils ,里面有获取当前年份的方法 getCurrentYear(),通常来说,你不会先实例化一个DateUtils类,而是直接通过类名调用,该方法通常声明为static。至于变量,如果声明为static,通常表示需要常驻内存的。
3. 为什么要使用typedef给类型重命名
typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。
|
|项目日报表
项目名称 | 苏嵌实训- 嵌入式开发第五天 |
---|---|
今日进度及任务 | 完成日报表和三道题目,今天学习了函数和内存处理 |
本日任务完成情况 | 基本掌握和完成 |
本日开发过程中出现的问题 | 无 |
本日未解决的问题 | 无,基本可以完成老师的任务 |
本日的收获 | 了解了如何减少内存碎片的方法,如何更好的实现内存利用最大化 |
其他 | 无 |