Привет. Это проблемы, связанные с GLib, gpointer.
Я создаю значение с типом gpointer.
gpointer keys;
я вызвал функцию
insert_data(gpointer key);
Я передал целочисленный указатель на эту функцию вот так.
int* p = malloc(sizeof(int));
*p = 1;
// gpointer is void* pointer, I cast it to integer type pointer here.
insert_data(p);
Внутри функции я хочу видеть значение p.
printf("%d\n", (int*)p);
Он выводит какое-то очень большое число. С моей стороны это 296304, а не фактическое значение 1. Я хочу знать, как разыменовать указатель, такой как gpointer.
Для целочисленного 32-битного указателя, указателя char *, как их разыменовать?
Спасибо