构造函数

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对象。

函数的调用者接受数据的所有权,并负责释放它。