操作系统-静态链接与动态链接

  1. 静态链接与动态链接的区别
    静态链接:把要调用的函数或者过程直接链接到可执行文件中,成为可执行文件的一部分,换句话说:函数和过程的代码就在程序的EXE文件中,该文件包含运行时所需的全部代码,但存在当多个程序调用相同的函数时,内存中会存在多个该函数的拷贝,浪费内存资源。
    动态链接:动态链接是相对于静态连接而言的,动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息),当且仅当程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的动态链接库(DLL)之间建立联系。当要执行所调用DLL中的函数时,根具链接产生的重定位信息,操作系统才会转去执行DLL中的相应代码。

  1. 静态链接库与动态链接库的区别
    静态链接库就是使用的.lib文件,库中的代码最后需要链接到可执行文件中去,所以静态链接的可执行文件一般比较大一些。

    动态链接库是一个包含可由多个程序同时使用的代码和数据的库,它包含函数和数据模块的集合,程序文件(如.exe文件和.dll文件)在运行时加载这些模块(也即所需的模块映射到调用进程的内存地址空间)。

    静态连接库和动态链接库的相同点是他们都实现了代码共享。不同点是静态连接库lib中的代码被包含在调用的exe文件中,该lib文件不能再包含其他动态链接库或者静态连接库,而动态链接库dll可以被调用的exe动态的“引用”和“卸载”,该dll中可以包含其他的静态连接库或动态链接库。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,942评论 0 27
  • 动态调用动态库方法c/c++linuxwindows 关于动态调用动态库方法说明 一、 动态库概述 1、 动态库的...
    KINGZ1993阅读 14,060评论 0 10
  • 前言 1.静态库和动态库有什么异同? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。利用静态...
    Ly梦k阅读 8,694评论 3 18
  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 4,368评论 0 4
  • 绛色的邮筒倒倚着纸盒 褪色的风筝不见了线 带锁的日记本上落满了灰 古朴的镜子只剩碎片 有酒瓶的地方也没了人群 树隙...
    小怪的糖阅读 292评论 0 2