gpt4 book ai didi

c - 将虚拟地址存储在指针而不是物理地址中有什么好处?

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:55 28 4
gpt4 key购买 nike

我浏览了下面的链接,它说在大多数操作系统上,指针存储虚拟地址而不是物理地址,但我无法获得将虚拟地址存储在指针中的好处。

当最后我们可以直接通过指针修改特定内存位置的内容时,那么它是虚拟地址还是物理地址有什么问题呢?另外在代码执行期间,大部分时间数据段也会保留在内存中,所以我们只处理物理内存位置,那么虚拟地址有什么用?

C pointers and the physical address

最佳答案

撇开安全问题(如前所述),还有另一大优势:

全局变量和函数(以及您的堆栈)始终可以在固定地址找到(因此汇编器可以对它们进行硬编码),而与您的程序实例加载位置无关。

如果您真的希望您的代码从任何地址运行,您必须使其位置独立(对于 gcc,您将使用 -fPIC 参数)。这个问题可能是关于 -fPIC 和虚拟寻址的有趣阅读:GCC -fPIC option

关于c - 将虚拟地址存储在指针而不是物理地址中有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923428/

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