指针地址存储器属于RAM还是硬盘?

时间:2017-09-28 09:26:19

标签: c

#include <stdio.h>
int main() {
    int num=1234;
    printf("%p", &num);
    return 0;
}

//Ouput:
//0xffffcbfc

0xffffcbfc是RAM还是硬盘地址存储器?

4 个答案:

答案 0 :(得分:6)

严格地说,该代码表现出不确定的行为。您必须将指针转换为void *,因为这是%p所期望的:

printf("%p\n", (void *) &num);

从C的角度来看,它可能没有具体说明究竟是什么类型的物理设备保存地址,但在典型的计算机上它将是RAM。

答案 1 :(得分:1)

这是一个堆栈地址,它本质上是RAM。它不是真正的物理RAM地址(在现代系统中),实际上只反映了内核的簿记。

答案 2 :(得分:1)

具有HD的计算机上的程序总是由OS加载到RAM中并从那里执行。所有地址都将指向RAM。

您无法直接从程序中处理高清内存,您必须通过文件系统。

答案 3 :(得分:1)

严格来说,当打印变量的地址时,您看到的地址来自虚拟内存(在大多数情况下,您将在使用virtual memory的操作系统上运行程序。)

如果您的操作系统不使用虚拟内存,则该地址将直接来自RAM。

要运行程序,必须将其加载到内存(RAM)中。简而言之,您将从硬盘中获取地址。