gpt4 book ai didi

c - 内存和文件指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:42 25 4
gpt4 key购买 nike

当您在代码中执行 fopen 时,我对操作系统实际上如何用 C 语言“打开”文件感到困惑。详细说明,假设我有 100 个二进制文件(比如大小 1 MB),我用 C 语言打开

FILE **fptr;

fptr = calloc(100, sizeof(FILE *));

for (ii = 0; ii < 100; ii++)
fptr[ii] = fopen(filename[ii], "rb+");

假设 filenameii 已经正确定义。

操作系统会将 100 MB 加载到内存中,还是上面的代码只是告诉程序让这些文件做好访问准备?

最佳答案

后者,直到需要时才会从文件中读取数据,即当您调用 fread() 或其他一些 I/O 函数时。

当然,底层操作系统可能会决定在打开文件时推测性地读取数据,以节省以后的时间,但这不在您的控制范围内,因此实际上无关紧要。我的意思是这无关紧要,因为这种推测性缓冲使用的任何内存都需要立即按需提供给应用程序。

也就是说,似乎没有任何实际系统会让 fopen() 花费读取 100 MB 所需的时间,但那将是非常糟糕的工程。

另请注意,单个进程可以并行打开的文件数量可能存在限制。不过,对于大多数现代系统,100 应该没问题。

关于c - 内存和文件指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16562473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com