在阅读有关字符串流的GNU文档时,我发现了两个类似的函数,它们执行非常相似的操作:
FILE * fmemopen (void *buf, size_t size, const char *opentype)
FILE * open_memstream (char **ptr, size_t *sizeloc)
Run Code Online (Sandbox Code Playgroud)
从阅读文档,似乎open_memstream应该用于打开输出流和fmemopen输入.让我感到opentype惊讶的是你可以传递给我的论据fmemopen.
linux手册页说明:
如果将buf指定为NULL,则fmemopen()动态分配一个缓冲区大小为bytes的字节.这对于想要将数据写入临时缓冲区然后再次读取的应用程序非常有用.关闭流时,将自动释放缓冲区.请注意,调用者无法获取指向此调用分配的临时缓冲区的指针(但请参阅下面的open_memstream()).
那么,open_memstream如果fmemopen可以处理打开输入/输出流,那将是什么意义?