读书笔记
xl365t
专注于音视频通话、视频会议、即时通信等
展开
-
第4部分 库与运行库---(10)内存
################### # 10、内存 ################### # 程序的内存布局 在32位操作系统中,内存空间拥有4GB的寻址能力。操作系统会把高地址的空间分配给内核,称为内核空间。 默认情况下,Windows将高地址的2GB空间分配给内核,Linux将高地址的1GB空间分配给内核。剩下的2GB或3GB的内存空间称为用户空间。 在用户空间里,有许多原创 2017-07-21 10:56:37 · 242 阅读 · 0 评论 -
第2部分 静态链接---(2)编译与链接
################# # 2、编译和链接 ################# 编译过程分解为4个步骤:预编译、编译、汇编和链接。 // hello.c #include int main() { printf("Hello World\n"); return 0; } (1)预编译 [gcc -E] 源代码文件(hello.c)和相关的头文件(stdi原创 2017-07-21 11:05:20 · 252 阅读 · 0 评论 -
第2部分 静态链接---(3)目标文件里有什么
################### # 3、目标文件里有什么 ################### # 目标文件的格式 可执行文件:Linux下的ELF(Executable Linkable Format)可执行文件 动态链接库:DLL(Dynamic Linking Library) , linux的.so 静态链接库:.a ELF格式的文件可以归为以下4类: (1)原创 2017-07-21 11:19:44 · 464 阅读 · 0 评论 -
第2部分 静态链接---(4)静态链接
################# # 4、静态链接 ################# // a.c extern int shared; int main() { int a = 100; swap(&a, &shared); } // b.c int shared = 1; void swap(int *a, int *b) { *a ^= *b ^= *a原创 2017-07-21 12:05:21 · 341 阅读 · 0 评论 -
第3部分 装载与动态链接---(7)动态链接
################### # 7、动态链接 ################### # 为什么要动态链接 (1)内存和磁盘空间浪费 静态链接对于计算机内存和磁盘空间的浪费非常严重,特别是在多进程操作系统的情况下。 比如Program1和Program2分别包含Program1.o和Program2.o两个模块,并且它们还都用到Lib.o模块。当同时运行Prog原创 2017-07-19 15:37:27 · 399 阅读 · 0 评论 -
第3部分 装载与动态链接---(6)可执行文件的装载与进程
######################## # 6、可执行文件的装载与进程 ######################## # 进程虚拟地址空间 程序(或者狭义上讲可执行文件)是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件; 进程则是一个动态的概念,它是程序运行时的一个过程。 每个程序被运行起来以后,它将拥有自己独立的虚拟地址空间(Virtua原创 2017-07-17 20:54:21 · 416 阅读 · 0 评论