У меня было какое-то странное поведение Glib, я немного искал в интернете и нашел это руководство по Glib , второй блок кода, который будет конкретным:
//ex-garray-2.c
#include <glib.h>
#include <stdio.h> // I added this to make it compile
int main(int argc, char** argv) {
GArray* a = g_array_sized_new(TRUE, TRUE, sizeof(int), 16);
printf("Array preallocation is hidden, so array size == %d\n", a->len);
printf("Array was init'd to zeros, so 3rd item is = %d\n",
g_array_index(a, int, 2));
g_array_free(a, FALSE);
// I removed some code here
return 0;
}
Итак, ожидаемый результат должен быть
Array preallocation is hidden, so array size == 0
Array was init'd to zeros, so 3rd item is = 0
но я получаю
Array preallocation is hidden, so array size == 0
Array was init'd to zeros, so 3rd item is = 901959560
Я использую Gentoo Linux ~ amd64 (64-битная версия, тестирование) с gcc 4.5.3, glibc 2.13 и glib 2.26.1. Я скомпилировал программу, используя gcc $(pkg-config --cflags --libs glib-2.0) -o ex-garray-2 ex-garray-2.c
Есть идеи, почему я получаю наблюдаемое поведение, а не ожидаемое?