关于dll调用的内存布局模型

TiWalker 2016-09-02 09:11:57
之前研究了C++的内存布局,如静态存储区、栈区、堆区等,我在想之前也有调用dll,那么调用dll时,dll的内存分配是在哪里?
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2016-09-02
  • 打赏
  • 举报
回复
哎 dll的代码是必须要映射到进程虚拟内存空间的,而且进程还必须为dll的一些非共享数据也分配空间。
ztenv 版主 2016-09-02
  • 打赏
  • 举报
回复
引用 4 楼 yutianxin123 的回复:
引用 楼主 yutianxin123 的回复:
之前研究了C++的内存布局,如静态存储区、栈区、堆区等,我在想之前也有调用dll,那么调用dll时,dll的内存分配是在哪里?
恩,你的意思是dll的内存分配是按照自己写的代码来分配的,我想了解的是,程序调用dll,作为整体的dll内存布局,放在调用程序的哪一块?还是说dll与被调用程序无关,而是仅仅自己在内存中开辟一块内存?
dll做为共享库,与调用的程序在布局上没有关系,是独立的;这也是为什么当有多个程序同时使用同一个dll节省内存的地方;而静态库的布局则是和程序在一起的
TiWalker 2016-09-02
  • 打赏
  • 举报
回复
引用 楼主 yutianxin123 的回复:
之前研究了C++的内存布局,如静态存储区、栈区、堆区等,我在想之前也有调用dll,那么调用dll时,dll的内存分配是在哪里?
恩,你的意思是dll的内存分配是按照自己写的代码来分配的,我想了解的是,程序调用dll,作为整体的dll内存布局,放在调用程序的哪一块?还是说dll与被调用程序无关,而是仅仅自己在内存中开辟一块内存?
pengzhixi 2016-09-02
  • 打赏
  • 举报
回复
在栈下面 堆上面这一个区间的内存区域是用来给dll共享库使用的。这一块包括用来存放共享库的代码和使用的数据。
  • 打赏
  • 举报
回复
这块不了解,只是再用。关注高手们的回答。
张小飞Official 2016-09-02
  • 打赏
  • 举报
回复
dll的内存分配就是你自己定义的那个类的分配形式啊

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧