C++好难啊
C++好难啊
全部文章
程序员的自我修养
C++并发编程(2)
C++高级(30)
C剖析(2)
C深度剖析(1)
java(2)
linux(20)
MySQL(1)
Nginx(1)
剖析moduo网络库(6)
在线订票系统(1)
基于ID3的预测系统(1)
安装配置教程(4)
算法(6)
詹的学习笔记(2)
计算机网络(4)
进程间通信(4)
附件资料(9)
集群聊天服务器(2)
题解(1)
归档
标签
去牛客网
登录
/
注册
C++好难啊的博客
全部文章
/ 程序员的自我修养
(共30篇)
目标文件详解
目标文件(可能篇幅较长) 什么是目标文件? 编译器编译源代码后生成的文件叫做目标文件。 目标代码是指源代码经过编译程序产生的能被cpu直接识别二进制代码。 目标文件的格式 目标文件是源代码经过编译但未链接的那些中间文件。 windows上为.obj文件,linux上为.o文件 目标...
2020-07-29
1
906
目标文件之间的粘合剂——符号
符号 什么是符号?为什么要有符号? 链接的本质就是把多个不同的目标文件之间相互“粘”到一起,就像是拼图一样,你要把每一块“目标文件”拼接成一个完整的“程序”。 在链接中,目标文件之间相互拼合实际上就是目标文件之间地址的引用,即对函数和变量的地址的引用。我们将函数和变量统称为符号,函数名或变量名就...
2020-07-29
0
514
静态链接——空间的地址和分配
空间与地址分配 对于链接器来说,在连接过程中。它的工作就是把多个输入的目标文件加工成合并成一个输出文件。这一篇博客就是介绍的静态链接中空间与地址分配的,有关静态链接的其他内容以及动态链接的信息我会在之后的博客介绍。 按序叠加 按序叠加可以说是最简单的一个方案,就是将输入的目标文件按照次序叠加起...
2020-07-29
0
596
静态链接——符号解析和重定位
符号解析和重定位 在上一篇博客空间的地址与分配介绍过,链接器链接目标文件分为两个步骤。这一篇博客就是介绍第二步符号解析和重定位的。这也是静态静态链接中的核心内容。符号详解 重定位 看下边一个例子: #include "func.c" int main() { func(...
2020-07-29
0
987
静态链接——C++相关问题
C++相关问题 C++的一些语言特性是必须由编译器和链接器共同支持才能完成。主要就是两方面,一个是C++是的重复代码消除,一个是全局的构造和析构。 重复代码消除 C++在很多时候会产生重复的代码,比如模板、虚函数表等都可能在不同的编译单元生成相同代码。这样就会造成以下问题: 空间浪费:如果几...
2020-07-29
0
483
进程的装载
进程的装载 程序执行时所需要的指令和数据必须在内存中才能够正常运行,最简单的方法就是将所需要的指令和数据全部装入内存,这就最简单的静态装载。 熟悉计算机原理的同学可能知道,程序运行是有时间以及空间局部性的,,所以我们一般将程序最常用的部分驻留内存,将一些不太常用的放在磁盘上。这就是动态装载的基本原...
2020-07-29
0
658
进程虚拟空间
进程虚拟空间 进程 进程是我们经常提到的一个概念,那么它究竟是什么?它和程序又有什么区别呢? 程序是一个静态的概念,它是一些预先编译好的指令和数据集合的文件。 进程则是一个动态的概念,它是程序运行时的一个过程。 如果程序是剑谱的话,进程就是你舞剑的过程,函数是你的一个剑招。 进程虚拟空间 ...
2020-07-29
0
318
进程虚拟空间分布
进程虚拟空间分布 ELF文件链接视图和执行视图 当我们站在操作系统装载可执行文件的角度看问题时,可以发现它实际并不关系可执行文件的实际内容,操作系统只关心一些跟装载有关的问题,主要是段的权限。ELF文件中,段只有几种组合,基本是以下三种: 以代码段为代表的权限为可读可执行的段。 以数据段和BS...
2020-07-29
0
899
动态链接
动态链接 动态链接的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件。 静态链接时,整个程序最终只有一个可执行文件,它是一个不可分割的整体; 在动态链接下,一个程序被分成了若干个文件。 ...
2020-07-29
0
540
深入动态链接
深入动态链接 上一篇博客:动态链接简单介绍了动态链接的原理,这篇博客将要介绍动态链接的具体实现。 动态链接相关结构 动态链接情况下,可执行文件的装载和静态链接基本一样。首先操作系统会读取可执行文件的头部,检查文件的合法性,然后从头部中的“program header”中读取每个“segment...
2020-07-29
0
472
首页
上一页
1
2
3
下一页
末页