c++ - 操作内存中的数据而不是文件

标签 c++ memory file redirect

考虑下面的函数:

int Func(char* filename);
int Func(FILE* filepointer);

这两个做同样的事情,从给定的文件中读取大量数据(通过名称或指针),分析他的结果,并返回它。 我想用很多不同的数据调用这个函数。因此我应该将数据写入文件,然后将新文件名传递给 Func。但是数据很大,硬读写很慢。实际上分析时间比 I/O 少得多。

我可以通过任何方式一直摆脱保存/加载数据吗? 例如通过制作一个指向内存中某处的 FILE* 指针?

更新:显然我没有Func的源代码!这是一个 DLL 调用。

最佳答案

你可以使用 memory-mapped文件技术或类似 boost::iostreams 的东西带有自定义内存接收器/源。

实际上,第二种变体要灵活得多,但有时根本不需要所有的灵 active 和多功能性。

关于c++ - 操作内存中的数据而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3219897/

相关文章:

c++ - 帮我写一些 C++ 代码

c++ - shared_ptr 原子函数采用指针而不是引用的基本原理

JMX 与 htop 报告的 Java 内存

c++ - Windows中的管道句柄如何关闭? (_pclose() 的 fclose())?

javascript - 使用在 Firefox 中工作的文件 :///, AJAX 打开页面,而不是 Chrome 或 IE

C++11 将 `auto` Lambda 更改为不同的 Lambda?

使用正确的显示名称创建 C++ 编码文件

c - 在以下情况下,哪个更好? fread() 还是 mmap()?

android - 如何有效地修改从相机捕获的字节?

python - Pandas:要保存以包含数据类型的文件类型