以下代码片段来自The Official GNOME 2 Developer's Guide:
GMemChunk my_chunk;
my_chunk = g_mem_chunk_new("My Chunk",
42,
42*16,
G_ALLOC_AND_FREE);
gchar *data[50000];
gint i;
/* allocate 40,000 atoms */
for(i = 0; i < 40000; i++)
{
data[i] = g_mem_chunk_alloc(my_chunk);
}
这是否意味着每个原子都是 42 字节,每个“内存块”包含
4216 个原子,并且40000/16=2500
在运行上述代码时会创建内存块?他们为什么在这里使用 gchar* ?运行时是否会发生从 gpointer (void*) 到 gchar* 的隐式转换
data[i] = g_mem_chunk_alloc(my_chunk);
?如果上述陈述为真,则每个 gchar* 指向 42 字节的内存。那么如何访问特定原子的所有字节呢?会
data[7]+41
是一个可用的内存位置吗?
当我尝试编译代码 gcc 产生此错误消息:
error: storage size of ‘my_chunk’ isn’t known
怎么了?