当文件在 C++ 中打开并且我们开始读取时,整个文件是从硬盘加载到 RAM 还是只是一个块一个块地加载?

When the file is opening in C++ and we start reading , does the whole file load to RAM from hard disk or just a block by a block?

当文件在 C++ 中打开并且我们开始读取时,是将整个文件从硬盘加载到 RAM 还是逐块加载到 RAM?

您决定要读入 RAM 的量。当您执行 'getline' 或将某个数量读入缓冲区时,您正在将它从磁盘移动到 RAM。如果文件格式为 'streamable',您可以一次处理文件的小块,并且仍然执行整个操作。某些文件格式您需要读取大部分文件才能执行操作,这可能会因多种原因而成为问题。

  1. 如果在开始处理之前必须完全加载文件,您不能在获得前几个字节后立即开始工作。这是一个完全顺序的操作,比同时处理和加载要慢。

  2. 正如您提到的 RAM 比磁盘小,但即使 RAM 可以容纳一个文件,如今计算机也经常 multi-tasking。当相同的操作可以用几千字节完成时,1 个进程需要 4 GB 的 RAM 可能会给机器上的其他进程带来问题。