是否可以创建C FILE对象以在内存中读/写

ree*_*ece 9 c++ memory file

我正在使用一个API,它FILE *正在使用它来创建内存中的数据缓冲区:

std::shared_ptr<FILE> f(tmpfile(), fclose);
write_to_file(f.get());
rewind(f.get());
auto data = make_file_buffer(f.get());
return data;
Run Code Online (Sandbox Code Playgroud)

这有效,但比写入内存缓冲区要慢.

是否有可能将其写入内存文件并避免读/写磁盘(如stdin/stdout/stderr读/写控制台)?

注意:我使用的是Linux,因此可以访问Linux和POSIX API.

Dam*_*mon 19

是的,这是可能的,请参阅fmemopen.

  • 我实际上从来不知道这一点。+1:)。 (2认同)
  • @AryaPourtabatabaie:Windows或MSVCRT本身不支持此功能。您可能可以通过以下方式解决该问题:打开带有“临时”提示的文件(除非您用尽了物理内存,否则该提示通常等效于内存中的文件),或者通过创建匿名文件映射(也就是一个类型的“内存缓冲区”),然后在“ HANDLE”上调用“ _open_osfhandle()”,然后再调用“ _fdopen()”。那给你一个“ FILE *”。 (2认同)