美文网首页
第6章,运行时数据结构

第6章,运行时数据结构

作者: Dafanzi | 来源:发表于2017-01-08 13:58 被阅读0次

a.out及其传说

a这个名字不是偶然的

可执行文件可以有几种不同的格式。但所有这些不同格式都据哟一个共同的概念,那就是段。但大家千万不要把这个端和Inter x86架构中段的概念混淆。这个段只是表示一个二进制文件相关的内容块。

在一个可执行文件中运行中运行size命令时,它会告诉你文件中的三个段(文本段,数据段和bss段)的大小

下图显示了编译器和链接器分别在这些段中分别写入的东西

操作系统在a.out文件里干了些什么?

大家想没想为什么a.out要以段的形式组织?因为段可以方便映射到进程的虚拟地址空间中。载入器载入程序的时候是按每个文件中的每个段进行载入的,所以这样组织是很有效率的。

C语言运行时系统在a.out里干了些什么?

堆栈段

alloca是在函数里面分配内存,函数执行完就马上释放的。和malloc不同的

当函数被调用时发生了什么:过程活动记录

详情可以看我的C和指针运行时环境那一章

软件信条:C语言中的所有函数在词法层次中位于最顶层,我们不能在函数内部再定义函数。

auto关键字

在函数内部的变量默认类型是auto类型,然后当函数结束后,变量就不复存在了。因而我们不应该从函数中返回一个指向该函数局部自动变量的指针。

控制线程

setjmp和longjmp

UNIX中的堆栈段

小tips:用grep调试内核

有时候我们可以把一个二进制文件进行反汇编得出ascii文件。然后再根据之前的二进制文件(可执行文件)得出的错误信息,用grep查找错误。

相关文章

  • 2018.11

    1: OC 分类 运行时 内存2: AFN&SD3: 数据结构算法

  • Objective-C Runtime

    描述macOS OC运行时库支持的函数和数据结构. 通览 OC运行时是一个运行时库,该库用来支持OC语言的动态属性...

  • 目录 - 数据结构

    总目录 数据结构 第01局:绪论 数据结构 第02局:线性表 上 数据结构 第03局:线性表 下 数据结构 第04...

  • 第11章 均摊分析

    关键词 均摊界分析 在这一章,我们会分析在第4章和第6章里介绍过的若干种高级数据结构的运行时间,比如伸展树、平衡树...

  • 数据结构笔记(一)

    第1章 数据结构绪论 第2章 算法 第3章 线性表 第1章 数据结构绪论 程序设计 = 数据结构 + 算法 逻辑结...

  • iOS中元类和类

    元类和类的数据结构是同一个,只是运行时使用的字段不一样。 实例方法调用是通过objc_msgSend来调用,它的第...

  • 第6章,运行时数据结构

    a.out及其传说 a这个名字不是偶然的 段 可执行文件可以有几种不同的格式。但所有这些不同格式都据哟一个共同的概...

  • 虚拟机字节码执行引擎

    运行时栈帧结构 栈帧(Stack Frame)是用于虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区...

  • 2020-10-10---第八章---虚拟机字节码执行引擎

    1.运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时...

  • 内存分配---辨析malloc()、calloc()、new

    许多的程序需要为动态数据结构分配内存,此类数据结构的大小由运行时所获得信息决定。在堆或者堆栈中分配内存。1、mal...

网友评论

      本文标题:第6章,运行时数据结构

      本文链接:https://www.haomeiwen.com/subject/mwvqbttx.html