Unix 和 Windows 中大型二进制文件的低级 I/O

问题描述

我正在尝试用 C 编写一个十六进制编辑器(实际上,我只关心可视化部分)。

一切正常,直到我尝试处理大文件(我的缓冲区总是小于文件)。通过进行一些研究,我发现 mmap 可能是处理这些文件的最佳选择,但老实说,仅通过查看一些示例代码,我不明白它是如何工作的。它是否像 malloc 那样在内存中加载文件?它返回什么?我该如何利用它?将信息放在 char 数组中可能会很好。

此外,我试图通过在尽可能低的级别进行编码来实现这一目标。我知道每个程序员对“低级编程”都有自己的定义,所以我认为解释一下我的很公平:PortabilityCross-PlatformUsing the EXACT memory space for each variable。我只想编写我的代码一次,以便能够在目标操作系统中编译它,然后瞧。

由于上述原因,我没有使用 <Windows.h> 标头(HANDLECreateFileA()ReadFile()CloseHandle() 或任何类型的流它可能具有的功能。相反,我想使用......好吧,你知道,原生功能?我不知道如何调用它们。

顺便说一下,我尝试了不同的方法组合,但主要问题是要知道我处理的(大)文件在内存中的确切大小,而且我不太相信像 {{1 }} 与 put your pointer to the end and that's your file length 出于某种原因。另外,使用 fseek 对我来说有点奇怪,因为我找不到关于它的简洁信息,但是它的结构定义。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)