项目名称 | 苏嵌实训-嵌入式 linuxC 第 5 天 |
---|---|
今日进度以及任务 | 学习C语言中的函数,内存管理,关键字,复合数据类型 |
本日任务完成情况 | 已完成函数的复习,了解内存管理的意义,基本掌握了关键字的用法 |
– | – |
本日开发中出现的问题汇总 | const的用法:只有离const最近的数才会被锁定不会变化 |
本日开发收获 | 学会了const,register,extern等关键字的用法 |
作业1:free是如何知道释放空间多大的
其实真正的内存管理如申请/释放等,并不是由malloc或者free等库函数来负责的,而是交由操作系统去完成,它们只是维护一个空闲的链表式的内存块,理解这一点是问题的关键。例如:要申请sizeof(int)*100大小的内存空间,虽然返回的是内存大小是400,但实际上,操作系统分配时候,会多出一块用于存储内存大小的类似链表head头节点的东东,这个节点存储的是空间的首地址及分配内存的大小。当用户调用free函数的时候,其实它也不知道要释放内存的大小,它只需改变head头结点里的内存的大小就可以了,具体内存空间的释放由操作系统去完成。
作业2:static在什么样的情况下使用
statickeyword是C, C++中都存在的keyword, 它主要有三种使用方式, 当中前两种仅仅指在C语言中使用, 第三种在C++中使用(C,C++中详细细微操作不尽同样, 本文以C++为准).
(1)局部静态变量
(2)外部静态变量/函数
(3)静态数据成员/成员函数
作业3:为什么要用typedef给类型重命名
重命名的好处是能区分不同场合使用不同数据类型,这就好比同样是可乐,有些人就喜欢可口可乐,有些人喜欢百事可乐,typedef作用就像是一个标签一样,本来同一叫做可乐或者绿茶就可以了,但是实际使用场合中,会有需求希望做出区分,有了typedef,绿茶就可以重命名为统一绿茶和统一薄荷绿茶或者康师傅绿茶、雀巢绿茶了。