gpt4 book ai didi

c - malloc/calloc返回的内存地址是从虚拟地址空间来的吗?

转载 作者:IT王子 更新时间:2023-10-29 00:24:44 24 4
gpt4 key购买 nike

char *ptr = (char*) malloc(40);
printf("%u",ptr);

56737856 (some output)

现在,如果我没记错的话,我们在上面看到的输出不是物理地址,而是来自虚拟地址空间。我说得对吗?

有什么办法可以看到实际的物理地址吗?反之亦然(如果我上面的假设是错误的),malloc 的所有内部实现是否都必须使用 jemalloc 算法?

最佳答案

您在用户空间应用程序中看到的所有地址都是虚拟地址。

物理地址只与内核有关。从虚拟地址到物理地址的映射很复杂,因为:

  • 并非所有虚拟地址都有物理地址。 (例如,未映射、延迟零填充或换出的页面没有物理地址。)
  • 物理地址可能会在没有警告的情况下发生变化(例如,如果页面被换出和返回,或者共享页面被复制)。

除了一些非常不寻常的情况(主要与摆弄硬件有关),您不应该关心物理地址。

关于c - malloc/calloc返回的内存地址是从虚拟地址空间来的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001833/

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