问题描述
我试图更深入地理解指针,但我遇到了一种情况,我不知道指针指向什么类型的内存。我是否正确理解,如果指针通过 malloc()
或 calloc()
指向动态分配的变量,则指针指向 RAM,如果有静态数组或某些变量,则指针指向内存(SSD/HDD)?
解决方法
没有。从概念上讲,所有内存都是从管理它的操作系统借来的 RAM(如果有操作系统)。静态变量/全局变量和动态内存之间的区别在于静态变量/全局变量被设计为在程序退出/死亡之前永远不会返回到操作系统,而动态分配的内存 (malloc
/calloc
/{{1} }) 在概念上是可返回的,这就是 mmap
/free
的用途。
(请注意,当您 munmap
free
'd/malloc
'd 内存时,您只会返回到您的 C 标准库,它会自行决定将其返回给操作系统(如果有的话。)