【发布时间】:2013-05-24 19:48:31
【问题描述】:
我正在使用一个接受 FILE * 的 API,并使用它在内存中创建数据缓冲区:
std::shared_ptr<FILE> f(tmpfile(), fclose);
write_to_file(f.get());
rewind(f.get());
auto data = make_file_buffer(f.get());
return data;
这可行,但比写入内存缓冲区慢。
是否可以让它写入内存文件并避免读取/写入磁盘(如 stdin/stdout/stderr 读取/写入控制台)?
注意:我使用的是 Linux,因此可以访问 Linux 和 POSIX API。
【问题讨论】:
-
在Linux上可以打开/dev/shm中的文件,该文件纯粹存在于内存中。
-
这不是 C,您使用的是 C++ 结构。
-
@wildplasser 我正在使用的 API --
FILE *、tmpfile、fclose、rewind(以及fputc、fwrite等在 @987654329 中的调用@) -- 是在stdio.h中定义的 C API。这就是为什么我将它标记为C,因为我在一个将FILE *返回到内存缓冲区的C 函数之后。我使用 C++ 构造来展示我是如何使用 C API 的。