静态库和动态库介绍

静态链接库:将函数和数据已编译成二进制文件。编译器在链接过程中,会将二进制恢复,并和应用程序的模块组合,生成可执行文件。此过程也称之为“静态链接”。
静态库特点:
1) 因为已经将所需要的函数和数据加载到程序中,所以静态库不需要和程序同步发布。(即,生成的应用程序不需要静态库再支持。)
2)如果有多个(调用相同库函数的)进程在内存中同时运行,内存中就存有多份相同的库函数代码,因此占用内存空间较多

动态链接库:DLL是一种不可执行的二进制文件。它提供了一种调用非应用程序本身代码的方法。
执行机制:只有在程序运行时,才动态的链接。并且即使有数个程序同时调用,也只会在内存中保存一份函数代码。
因此,动态库的代码必须满足:能够被加载到不同进程的不同地址。所以,代码要经过特别的编译处理。通常,把这种编译称之为:位置无关代码(Position independed code )
动态装载分为两类:静态绑定 和 动态绑定。
静态绑定:就是开始运行时,把代码先计算并加载到内存中。这样程序开始加载速度慢,但运行块。
动态绑定:到需要时,在将代码装载到内存中。如果有多次使用,就需要多次装载。这样程序开始加载速度快,但运行相对较慢。
另外,虽然内存中只有一份动态代码。但是,动态库数据仍然可能有多分。每一个进行都会有自己的动态库数据。所以,不会造成数据错乱等问题。

PS:平时使用的C++库都是动态库。(不确定是静态绑定还是动态绑定)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值