次のコードスニペットは、公式GNOME2開発者ガイドからのものです。
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バイトであり、各「メモリチャンク」に
42個の16アトムが含ま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
どうしたの?