小众知识

首页 > 正文

c++动态连接库

1.c++动态连接库所占的内存什么时候被回收?
2.A和B都用了动态连接库X,操作系统是否为X分配两个不同的空间?
3.如果X中有一个公用变量V,请问A把V设为100后,B读到的V是100吗?  

 phbzy 发表于:2003-10-31 15:44:40
得分:0 

所有调用这个dll的程序不在凋用他的时候就收回内存

 如果v是公享变量 b就是100,不然只是公共变量,是不项干的

 maximos 发表于:2003-10-31 16:30:51
得分:0 

DLL在内存中只有一个COPY,但是可以映射到不同的地址空间中,简单说就是"基址+偏移"
a+b=x+y明白吧?

除非特别申明,DLL中的变量引用者各自一份COPY.

DLL可以动态加载和卸载. 但是卸载时确认没有别的应用程序使用,也就是私有DLL.
非动态加载的DLL可能内部有一个计数,当计数为0时系统会自动卸载DLL.

举一反三:
1. MS很多技术都使用了计数方式.
2. C++类编译的结果一般成员函数和变量也是分开处理的. 

 panzhaoping 发表于:2003-11-03 01:40:07
得分:0 

有点肤浅,但大致不错
有兴趣看看 windows 核心编程 ,不能一言毕之的 

 zhuliangsu 发表于:2003-11-03 09:29:06
得分:0 

除非什么样的特别申明,DLL中的变量引用者共用一份COPY 

 zhuliangsu 发表于:2003-11-03 09:31:07
得分:0 

非动态加载的DLL和COM有什么本质的区别 

上一篇:如何实现C++程序在多系统下运行
下一篇:请教有没有c++库的api下载???

分享到: