gpt4 book ai didi

c - 存储在.data 或.bss 段中的静态或全局数据是否应该在程序执行前加载?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:01 32 4
gpt4 key购买 nike

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

最佳答案

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

Google 诸如“内存管理”、“虚拟内存”、“分页”之类的内容以获取更多信息。

关于c - 存储在.data 或.bss 段中的静态或全局数据是否应该在程序执行前加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10424286/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com