首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应该在程序执行之前加载存储在.data或.bss部分中的静态数据还是全局数据?

应该在程序执行之前加载存储在.data或.bss部分中的静态数据还是全局数据?
EN

Stack Overflow用户
提问于 2012-05-03 10:23:57
回答 1查看 153关注 0票数 1

通常,静态变量和全局变量都根据其初始化条件存储在.data或.bss部分中。据说它们的生命周期是从程序的开始到结束,也知道在分页管理中,程序是以页的形式加载到内存中的。这是否意味着在访问.data和.bss段之前,或者在第一条指令执行之前,都应该将它们加载到内存中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-03 11:16:13

您在这里处理的是两个级别的抽象。程序中访问的所有内容都在虚拟地址空间中,.data/.bss部分在程序执行开始时可用。更深层次的抽象是,虚拟地址空间由使用分页的物理内存支持,由内存管理器管理。这对于执行代码和加载进程的代码来说是完全未知的。因此,在这个级别上,.data/.bss的某些部分(甚至您的代码)可能不存在于主内存中,因为物理页面尚未加载,通常这些页面将根据需要加载,因为它们对应的虚拟地址被引用。

谷歌像“内存管理”,“虚拟内存”,“分页”这样的东西来获取更多信息。

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

https://stackoverflow.com/questions/10424286

复制
相关文章

相似问题

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