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

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

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

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

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

你可能感兴趣的:(操作系统-静态链接与动态链接)