微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c-如何在Windows上将BYTE数组映射为FILE *

我发现了旧的巨大的开源代码,该代码对存储在磁盘文件中的二进制数据进行一些计算,输出也保存为二进制文件.

我想使用一种根方法,简化签名:

int magic(FILE* input, FILE* output);

问题是我将输入数据存储在进程内存中,并且希望将输出也作为进程内存.代码是如此之大,以至于我无法在合理的时间内重写它.

这个API迫使我在对magic()的每次调用上都要进行两个巨大的I / O.

在Windows上是否有可能使用C/C++机制将BYTE数组映射为FILE *?

解决方法:

似乎您需要fmemopen的功能

http://man7.org/linux/man-pages/man3/fmemopen.3.html

它占用一个内存区域并返回一个文件描述符.
不幸的是,这是POSIX函数,在Windows中没有等效的函数.内存映射文件可能不是您想要的,因为它们会获取现有文件并将其映射到内存区域,而不是像fmemopen那样.您唯一的选择是在Windows上的mingw上使用fmemopen(不知道是否可以这样做),或者推出自己的fopen,fwrite等版本.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐