构造函数
GioMemoryOutputStreamnew
声明 [src]
GOutputStream*
g_memory_output_stream_new (
gpointer data,
gsize size,
GReallocFunc realloc_function,
GDestroyNotify destroy_function
)
描述 [src]
创建一个新的GMemoryOutputStream。
在大多数情况下,这不是您想要的函数。请参见g_memory_output_stream_new_resizable()。
如果data非NULL,流将使用它作为其内部存储。
如果realloc_fn非NULL,它将用于必要时调整内部存储的大小,并且流将被视为可调整大小的。在这种情况下,流将开始时(概念上)为空。size
仅用作对data大小的提示。具体来说,在新建流末尾进行查找会查找零,而不是size。超过流末尾进行查找然后写入将引入一个零填充的间隙。
如果realloc_fn是NULL,则流是固定大小的。查找至末尾将精确查找size。超出末尾写入将导致“空间不足”错误。尝试超过末尾的查找将失败。与可调整大小的情况不同,在流中某个偏移量内进行查找并写入将保留在该点之前传入的作为data的字节,并在g_memory_output_stream_steal_data()时作为部分返回。因此,如果您打算进行查找,您可能因此需要确保data已正确初始化。
仅当您想要一个固定大小的流时,提供data和size才有意义。换句话说:如果realloc_fn非NULL,则最好提供data为NULL和size为0(允许GMemoryOutputStream自行进行初始分配)。
// a stream that can grow
stream = g_memory_output_stream_new (NULL, 0, realloc, free);
// another stream that can grow
stream2 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
// a fixed-size stream
data = malloc (200);
stream3 = g_memory_output_stream_new (data, 200, NULL, free);
此构造函数不直接对语言绑定可用。
参数
data
-
类型:
gpointer
指向要使用的内存块的字节,或
NULL
。此参数可以是 NULL
。数据由函数的调用者拥有。 size
-
类型:
gsize
data的大小。
realloc函数
-
类型:
GReallocFunc
一个具有realloc()语义的函数(例如g_realloc()),当data需要增长时调用,或
NULL
。此参数可以是 NULL
。 destroy函数
-
类型:
GDestroyNotify
当流最终化时在data上调用的函数,或
NULL
。此参数可以是 NULL
。
返回值
类型: GOutputStream
一个新的GMemoryOutputStream对象。
函数的调用者接受数据的所有权,并负责释放它。 |