c中指针指向什么类型的内存?

问题描述

我试图更深入地理解指针,但我遇到了一种情况,我不知道指针指向什么类型的内存。我是否正确理解,如果指针通过 malloc()calloc() 指向动态分配的变量,则指针指向 RAM,如果有静态数组或某些变量,则指针指向内存(SSD/HDD)?

解决方法

没有。从概念上讲,所有内存都是从管理它的操作系统借来的 RAM(如果有操作系统)。静态变量/全局变量和动态内存之间的区别在于静态变量/全局变量被设计为在程序退出/死亡之前永远不会返回到操作系统,而动态分配的内存 (malloc/calloc/{{1} }) 在概念上是可返回的,这就是 mmap/free 的用途。

(请注意,当您 munmap free'd/malloc'd 内存时,您只会返回到您的 C 标准库,它会自行决定将其返回给操作系统(如果有的话。)