我一直认为指针是 RAM 地址,指向可以随机访问的内存字节。但是,当我们在 C 中创建文件时,我们使用指向文件的指针 FILE*,但是,在我关闭程序后,创建的文件不是保存在我的 HD 中吗?所以,我在这里看到两种可能性:
1) 一个指针可以指向一个硬盘文件
2)文件保存在RAM中(这对我来说没有多大意义)
其中哪一项是真的?或者,如果有第三种可能,那是什么?
提前致谢。
小智 5
对文件系统驱动程序(FS 驱动程序)的调用会打开文件并为其提供句柄,该句柄位于 FILE 结构中的某处。
为此,FS 驱动程序计算出与请求的路径对应的硬盘地址,并在内部记住该硬盘地址,以便稍后执行对 fread 等的调用。
FS 驱动程序使用一种索引表(存储在 HDD 上)来计算与请求路径对应的 HDD 地址。这将根据文件系统类型(FAT32、NTFS 等)的不同而有很大差异。
FS 驱动程序依赖于 HDD 驱动程序来执行对 HDD 的实际读取和写入。
可能会在 RAM 中为文件分配缓存。这样,如果用户请求读取 1 个字节,C++ 可能会读取 KB 以防万一,因此后面的读取将是即时的。
从 fopen 返回指向已分配 FILE 的指针。