Visual C++ 之 动态链接库

动态链接库是基于提高系统内存资源的使用效率的解决办法。

为提高内存资源的使用效率,每一个程序都应该尽量少占用内存空间,在多任务环境下,同时运行的多个应用程序有时要调用相同的函数(尤其是一些统一的接口),比如标准的数学函数和windows环境下的窗口维护函数等等。因此,设想当多个应用程序同时运行并且都调用同一个函数时,不应该在内存上生成这个函数的多份拷贝,而应该使这些程序能够共享这个函数在内存中的执行代码,这样就减少了程序对内存的占用。动态连接库就是这样的具体实现办法。


1. DLL 介绍

动态链接库(Dynamic Link Library, DLL)是一个包含了若干个导出函数的可执行文件。与静态连接库(SLL)类似,DLL本质上也是一个函数库。但是与前者的主要区别是库代码的链接时机。如名字所理解,SLL是在编译、链接程序时就同程序链接,DLL则是在程序运行时才同程序链接;前者通过链接器LINK完成,后者由Windows操作系统(程序的运行者/管理者/载体)完成。

此外,SLL是直接把库里面的可执行代码直接复制到应用程序中,这样就增加了程序最终的可执行代码长度。SLL在多任务环境下运行效率可能很低,比如,两个程序同时运行且调用了库内的同一个函数,那么内存中就存在该函数的两个副本,从而降低了内存的使用效率。

DLL并不是这样,它不复制代码到程序中,而是通过动态加载,DLL代码被映像到调用进程的地址空间。DLL允许多个程序共享某个函数的一个副本。无论被多少个程序调用,在内存中只允许该函数的一个副本。


2. DLL 功能

除了实现代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值