免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1687 | 回复: 2
打印 上一主题 下一主题

[C++] 请教关于静态/动态库中的对象的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-15 10:48 |只看该作者 |倒序浏览
问题如下:

在静态库A中定义了一个对象a,定义了函数GetObject函数返回指向它的a对象的指针;
动态库B使用了A;
动态库C使用了A;
B和C同时也都定义了GetObject函数,仅仅是对A中相应函数的包装;
主程序加载了B和C同时也使用了A;

请问,在主程序中调用来自不同库的GetObject函数返回的是同一对象吗?

如果是不同的静态库,动态库组合呢?

我知道可以通过实际测试的方法得到答案,但想知道其中的原因,在网上找了半天没有找到相关内容,还请大家指教,或者告诉我应该搜索哪些关键字,谢谢!

论坛徽章:
0
2 [报告]
发表于 2009-09-15 11:02 |只看该作者

回复 #1 bidongliang 的帖子

应该不是一个对象。我想每一个进程都有自己的数据段的。代码段共享,不代表数据段共享

论坛徽章:
0
3 [报告]
发表于 2009-09-15 11:12 |只看该作者
但是动态库是加载到调用进程的地址空间里的啊。

以下内容来自百度百科:
在多线程应用程序中,请确保将对 DLL 全局数据的访问进行同步(线程安全),以避免可能的数据损坏。为此,请使用 TLS 为各个线程提供唯一的数据。

DLL 是一个包含可由多个程序同时使用的代码和数据的库。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP