导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

请问一个DLL的问题

dodont 2004-04-09 08:48:53
书上说n个进程可以共享同一个DLL,
那么如果在这个DLL中有一个变量,
进程1改变了它,那么在进程2里面是不是也会相应改变呢?
...全文
6 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kmlin 2004-04-09
所谓的共享仅共享函数,不共享变量。还有什么不明白?
回复
QunKangLi 2004-04-09
<WINDOWS核心编程>在这些方面有最详尽的介绍.
回复
QunKangLi 2004-04-09
DLL只是代码块的集合,代码是在进程地址空间里运行的,因此它的变量,除非显示声明位于共享段中,那么都将从调用进程的堆栈中申请,而代码块自身不会变动,不存在冲突问题.即使发生了故意的改动,在WIN2K以上的系统机,CopyOnWrite会保证先申请一块自己专用的内存副本,在上面进行操作.
回复
dodont 2004-04-09
能讲一下具体的实现吗?(可以另外开帖加分)
回复
thp 2004-04-09
...
回复
tabris17 2004-04-09
这是windows的copyonwrite机制,当dll中的数据被写时,系统会复制这个数据,而不影响别的进程,你可以设置shared section来实现内存共享
回复
54783szg 2004-04-09
用static定义变量也行呀!
回复
kmlin 2004-04-09
用同样的函数,不同的变量。
如想让变量也相同就得使用共享数据段
回复
weakwater 2004-04-09
只是函数指针相同
回复
dodont 2004-04-09
但是这样又怎么能叫共享呢?不是多个进程共享同一个动态链接库吗?
难道只是函数指针相同?
回复
ColderRain 2004-04-09
不会,进程1改变了它不会影响到进程2,每个进程都有一个DLL的副本,不会相互影响。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……