Я разрабатываю приложение GTK + 3 в C с использованием MSV C (Visual Studio) в windows для проекта колледжа. Я запустил отладчик и обнаружил, что приложение падает при возврате из вызова libffi. Стек поврежден и, следовательно, адрес возврата программы является мусором.
Дело в том, что он работает нормально в режиме выпуска, возможно, из-за оптимизации, но падает в режиме отладки. В чем может быть причина?
Я понятия не имею, как решить проблему ... Любая помощь будет оценена.
Вот часть кода, которая вызывает ошибку:
ffi_call_win64 (stack, frame, closure);
} // Error here
Exception thrown: read access violation.
pn was 0xFFFFFFFFFFFFFFFB.
MCVE
#include <gtk/gtk.h>
static void on_activate(GtkApplication* app) {
// Create a new window
GtkWidget* window = gtk_application_window_new(app);
// Create a new button
GtkWidget* button = gtk_button_new_with_label("Hello, World!");
// When the button is clicked, destroy the window passed as an argument
g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy), window);
gtk_container_add(GTK_CONTAINER(window), button);
gtk_widget_show_all(window);
}
int main(int argc, char* argv[]) {
// Create a new application
GtkApplication* app = gtk_application_new("com.example.GtkApplication",
G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL);
return g_application_run(G_APPLICATION(app), argc, argv);
}