问题描述
我正在尝试用 C 编写一个十六进制编辑器(实际上,我只关心可视化部分)。
一切正常,直到我尝试处理大文件(我的缓冲区总是小于文件)。通过进行一些研究,我发现 mmap
可能是处理这些文件的最佳选择,但老实说,仅通过查看一些示例代码,我不明白它是如何工作的。它是否像 malloc
那样在内存中加载文件?它返回什么?我该如何利用它?将信息放在 char
数组中可能会很好。
此外,我试图通过在尽可能低的级别进行编码来实现这一目标。我知道每个程序员对“低级编程”都有自己的定义,所以我认为解释一下我的很公平:Portability
、Cross-Platform
和 Using the EXACT memory space for each variable
。我只想编写我的代码一次,以便能够在目标操作系统中编译它,然后瞧。
由于上述原因,我没有使用 <Windows.h>
标头(HANDLE
、CreateFileA()
、ReadFile()
、CloseHandle()
或任何类型的流它可能具有的功能。相反,我想使用......好吧,你知道,原生功能?我不知道如何调用它们。
顺便说一下,我尝试了不同的方法组合,但主要问题是要知道我处理的(大)文件在内存中的确切大小,而且我不太相信像 {{1 }} 与 put your pointer to the end and that's your file length
出于某种原因。另外,使用 fseek
对我来说有点奇怪,因为我找不到关于它的简洁信息,但是它的结构定义。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)