Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 读取大文件时出现页面错误_C_Page Fault - Fatal编程技术网

C 读取大文件时出现页面错误

C 读取大文件时出现页面错误,c,page-fault,C,Page Fault,我正在使用4GB内存的系统上工作。我创建了一个4GB的大文件,并将其初始化为零 我开始逐整数读取大文件 我发现无论文件有多大,页面错误(主要)的数量都是零 我使用文件指针和文件描述符读取文件。在这两种情况下,我都没有发现任何页面错误(严重) 为什么会这样?程序中的页面错误是否仅在内部交换发生时发生 如果是的话,你能推荐一个会导致页面错误的C程序吗 我正在使用Ubuntu 12.04,我的电脑规格:4GB内存,500GB硬盘 提前感谢当您尝试访问虚拟内存中的数据时,页面错误会发生,而该数据在RAM

我正在使用4GB内存的系统上工作。我创建了一个4GB的大文件,并将其初始化为零

我开始逐整数读取大文件

我发现无论文件有多大,页面错误(主要)的数量都是零

我使用文件指针和文件描述符读取文件。在这两种情况下,我都没有发现任何页面错误(严重)

为什么会这样?程序中的页面错误是否仅在内部交换发生时发生

如果是的话,你能推荐一个会导致页面错误的C程序吗

我正在使用Ubuntu 12.04,我的电脑规格:4GB内存,500GB硬盘


提前感谢

当您尝试访问虚拟内存中的数据时,页面错误会发生,而该数据在RAM中不可用。使用诸如
read()
fscanf()
之类的I/O函数从文件中读取不会这样做;您直接从磁盘请求文件内容,而不是通过虚拟内存访问


如果您使用
mmap()
将文件映射到虚拟内存中,然后尝试访问该内存,您将看到页面错误,因为文件的内容会自动加载。

使用mmapFiles读取文件与此无关。要查看页面错误,必须访问大量虚拟内存。这段记忆来自哪里并不重要。您可以使用mmap映射它,或者使用malloc进行分配。