首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dll中的静态变量位于进程中的哪个段?

问dll中的静态变量位于进程中的哪个段?
EN

Stack Overflow用户
提问于 2009-09-23 17:37:52
回答 1查看 157关注 0票数 0

exe中的静态变量进入进程的数据段,并在进程启动时初始化。

因此,如果我的进程动态加载一个库,其中包含使用dlopen或其他方法的静态变量,则这些静态变量将映射到哪个段。还有什么时候会初始化这些静态变量呢?

我的理解是,进程中的数据段是固定的,不能像堆栈或堆那样增长。我说的对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-23 21:58:43

动态链接库有自己的段,这些段使用比text+data+bss更复杂的模型映射到地址空间。不会尝试拆分动态链接库并将其与原始文本、数据或bss段连接。

静态变量永远不会用代码初始化。如果它是一个可写的段,它将被按需从磁盘分页到您的地址空间,在那里它将成为一个私有映射。如果它是不可写的,你可能只是链接到一个已经加载的共享页面,但最终静态变量会在某个映像中初始化,并被分页到RAM中。

链接程序中的任何给定数据段通常不能像堆栈或堆那样增长,不。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1467524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档