fmemopen和open_memstream有什么区别?
在阅读有关字符串流的GNU文档时,我发现了两个类似的函数,它们的功能非常相似:
FILE * fmemopen (void *buf, size_t size, const char *opentype)FILE * open_memstream (char **ptr, size_t *sizeloc)
通过阅读文档,似乎open_memstream
应该将其用于打开输出流和fmemopen
输入。让我着迷的是opentype
你可以接受的论点fmemopen
。
linux手册页解释了:
如果将buf指定为NULL,则fmemopen()动态分配一个缓冲区大小的字节长。这对于想要将数据写入临时缓冲区然后再次读回的应用程序很有用。当关闭流时,缓冲区自动释放。注意,调用者无法获取指向此调用分配的临时缓冲区的指针(但请参见下面的open_memstream())。
那么,open_memstream
如果fmemopen
可以处理打开输入/输出流的用途,那将是什么呢?
回答:
使用fmemopen
,缓冲区将在打开时或之前分配,并且以后不会更改大小。如果要编写它,则必须在开始之前知道输出的大小。随着open_memstream
缓冲区的增长,随着您的写作。
以上是 fmemopen和open_memstream有什么区别? 的全部内容, 来源链接: utcz.com/qa/425721.html