您的位置:首页 > 运维架构 > Linux

苏嵌正式培训—Linux C第 5 天

2020-07-14 06:33 197 查看

嵌入式正式培训第五天(20200709) 日报表

姓名:吴航  班级:物171

第一题:malloc/free:free怎么知道释放多大的空间?
答:free函数调用形式:free(void*ptr);
因为free函数释放ptr所指向的一块内存空间,它指向被释放区域的首地址。被释放区是由malloc或calloc函数所分配的区域(malloc函数申请的存储空间比所要求的要稍大一些,额外的空间用来记录管理信息——分配块的长度)因此free函数是知道首地址为ptr的“空间大小”。
【补充】free()并不是真正意思上的释放内存。其实,free函数只是将参数指针指向的内存归还给操作系统,并不会把参数指针置NULL。从另一个角度来看,内存这种底层资源都是由操作系统来管理的,而不是编译器,编译器只是向操作系统提出申请。所以free函数是没有能力去真正的free内存的。只是告诉操作系统它归还了内存,然后操作系统就可以修改内存分配表,以供下次分配。

第二题:static在什么情况下使用?
答:当对象中出现共享数据时,该数据被静态所修饰。例如张三李四都是姓名,姓名是属性,数据是值(张三,李四等),值不一样不能共享,只能是对象特有数据。又例如,学生都是同一个学校,所以,学校可以定义为静态变量。限制函数的作用域,在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;限制变量的作用域,在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

第三题:为什么要使用typedef给类型重命名?
答:一是表明该类型的特殊作用,二是将来有可能要改变这种类型(比如由int类型改为char),每一个变量的声明都要改动,而声明则使维护程序变得十分简单——只要改一下typedef语句即可。

项目名称 【苏嵌实训—Linux C第  3  天】
今日进度及任务 对c语言的内存管理进行学习
本日任务完成情况 基本完成
本日开发收获 更深一步的熟悉了linux下的环境,通过对内存池管理的学习,对之前好多迷惑的问题有了自己的解答。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: