Linux学习心得一
来源:互联网 发布:苹果刷机助手for mac 编辑:程序博客网 时间:2024/05/21 17:28
最近跟着达内的视频学习了一下Linux内核相关的一些东西,之后每有一些学习心得便如下总结成一篇博客。
Linux学习心得一:
理解malloc的工作原理:
使用一个数据结构(链表)维护分配空间
链表的构成:分配的空间/上一个空间数据/下一个空间数据/管理分配空间大小的数据
对malloc分配的空间不要越界访问,因为容易破坏后台链表的维护结构。会导致malloc/free/calloc/realloc不正常工作
内存空间与变量的关系:
1.内存分四个区
全局栈,局部栈,堆,代码区
2.各种变量对应存放区
3.堆栈是一种管理内存的数据结构
4.查看程序的内存地址:getpid(),/proc,cat maps…
C++与C中的堆分配与删除函数的联系跟区别:
new与malloc的关系:
new的实现使用的是malloc。
区别:new使用malloc后,还会初始化空间。对于基本类型,直接初始化默认值,整数初始化为0。对于UDT类型,调用指定的构造器(或者默认构造器)。
delete和free区别:
delete也是使用free来完成删除的,但是delete会先调用析构器,再调用free。
delete p和delete[] p区别:
delete p和delete[] p都会正确的释放p,但是前者只会调用一次析构函数,而后者会对[]的每一个对象都调用一次析构函数。
定位分配 new(),对应realloc函数
calloc对应new[]
函数调用tips:
1.函数在执行的时候,拥有自己的栈空间(临时栈);
2.C++成员函数执行时,有自己和对象的两个栈空间。函数的参数就在临时栈,如果传递实参,则用来初始化临时参数变量。
3.对于函数指针,多传递实参是不会使用的,所以函数还是会正确工作。
4.指针传递和引用传递时,函数会创建一个临时栈,拷贝指针指向的地址,及变量地址,还是会产生指针地址的拷贝。两者区别是指针传递对值进行修改,需要对内存进行提取,即*操作,而引用传递自带提取操作。
不同函数调用方法(或者说函数导出方法)_stdcall, _cdecl, _fastcall(Linux中,用__attribute__((stdcall))表示)的区别:
1.决定函数参数的压栈顺序;
2.决定函数栈的清空方式;
3.决定函数的命名方式。
- linux学习心得(一)
- linux 学习心得(一)
- linux学习心得(一)
- Linux学习心得一
- Linux学习心得(一)
- linux下内存管理学习心得(一)
- 鸟哥 Linux 私房菜学习心得(一)
- 学习心得一
- Linux学习心得
- linux学习心得
- linux学习心得
- linux学习心得
- linux学习心得
- Linux学习心得
- Linux学习心得
- linux学习心得
- linux学习心得
- Linux 学习心得
- eclipse中spring配置文件的自动提示和命名空间的添加
- 自主编程实现String类的构造函数,析构函数,拷贝构造函数,赋值函数
- oracle存储过程
- 数据统计
- Android添加语音交互
- Linux学习心得一
- 基于R-FCN的物体检测
- 简述Kotlin中let, apply, run, with的区别
- Zookeeper简单介绍
- JS获取时间段内的工作时长
- DC学院数据分析师(入门)学习笔记----高级爬虫技巧
- 例题6-5 移动盒子(Boxes in a Line, UVa 12657)
- VBA异常--运行时错误1004(将一个工作簿拆分多个工作表)
- iOS沙盒机制和文件(一)