Я пытаюсь передать данные, выделенные в куче, через g_signal_connect, но это демонстрирует странное поведение.
Я передаю значение следующим образом:
int *test = new int(100);
g_signal_connect(G_OBJECT(deviceButton), "button_press_event", G_CALLBACK(showDeviceAndConnect), (gpointer) test);
И распечататьзначение:
static void showDeviceAndConnect(GtkWidget * deviceButton, gpointer data)
{
int *test = (int *) data;
fprintf(stderr, "Test: %d\n", *test);
}
Значение, которое печатается постоянно, равно 4.Я изменил новый int () на 3, 5 и т. Д., Он всегда печатает 4.
Я в замешательстве.Кто-нибудь знает, пожалуйста, что не так?
РЕДАКТИРОВАТЬ:
Кто-то помог мне разобраться.Сигнатура функции была на самом деле неправильной и пропускала один параметр.Это довольно глупо, но было трудно понять.