Le fragment de code suivant est de The Official GNOME 2 Developer's Guide:atomes GLib et des morceaux de mémoire
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);
}
Cela signifie-t chaque atome est de 42 octets, chaque "bloc de mémoire" contient 16 atomes de carbone, et
40000/16=2500
blocs de mémoire seront créés lorsque le code ci-dessus est exécuté? Pourquoi utilisent-ils gchar * ici? Est-ce qu'une distribution implicite de gpointer (void *) en gchar * a lieu lorsquedata[i] = g_mem_chunk_alloc(my_chunk);
est exécuté?Si l'instruction ci-dessus est vraie, chaque gchar * pointe sur 42 octets de mémoire. Comment puis-je accéder à tous les octets d'un atome particulier, alors? Est-ce que
data[7]+41
sera un emplacement de mémoire utilisable?
Lorsque je tente de compiler le code gcc produit ce message d'erreur:
error: storage size of ‘my_chunk’ isn’t known
Qu'est-ce qui ne va pas?
Merci caf. --Variance – Variance