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