长亭公开课
文章平均质量分 87
白日梦-想家
这个作者很懒,什么都没留下…
展开
-
堆
堆 什么是堆 栈常常用于为函数分配大小固定的局部内存 堆是可以根据运行时的需要进行动态分配和释放的内存,大小可变 堆由低地址向高地址增长 对应接口: malloc/new(c++) free/delete 栈是保证函数递归运行的数据结构,程序调用过程中保存局部变量等等由系统自动开辟的一个内存空间,堆是一个我们自己开辟的一个内存空间(不要把两者混为一谈) 堆在干什么 堆的实现重点关注内存块的组织和管理方式,尤其是空闲内存块 如何提高分配和释放效率 如何降低碎片化,提高空间利用率原创 2021-02-23 14:56:41 · 437 阅读 · 1 评论 -
ELF与动态链接
ELF与动态链接 ELF文件 一种Linux下常用的可执行文件 ELF中的数据按照Segment和Section两个概念来划分 Segment 用于告诉内核,在执行ELF文件时应该如何映射内存 每个Segment主要包含加载地址,文件中的范围,内存的权限,对齐方式 是运行时必须提供的信息 Section 用于告诉链接器,ELF中每个部分是什么,哪里是代码,哪里是只读数据,哪里是重定位信息 每个Section主要包含Section类型,文件中的位置,大小等信息 链接器依赖Section信息将不同的对原创 2021-01-17 21:50:45 · 170 阅读 · 0 评论 -
二进制基础
二进制基础 文章目录二进制基础从C语言到可执行程序机器指令的执行栈常见指令汇编指令的两种语法调用约定进程内存空间布局进程内存空间布局 从C语言到可执行程序 源代码C Code —(编译)— 汇编代码 —(汇编)— 目标文件 —(链接)— 可执行程序 汇编语言是机器指令的助记语言,汇编语句和机器语句可一一对应 目标文件是源代码经过编译后没有被链接的那些中间文件,例如Linux下的.o文件 可执行程序是可被操作系统加载到内存并执行的文件,例如Linux系统下的ELF文件和Windows下的EXE文件 库函原创 2021-01-15 21:19:31 · 277 阅读 · 1 评论