Segmentation Fault bei Struktur
-
Ich habe ein Problem mit der Speicherreservierung von einer Struktur. Compilieren funktioniert problemlos nur beim Ausführen kommt es zu Problemen.
#include <gtk/gtk.h> #include <stdio.h> #include <stdlib.h> struct File { FILE *file; GtkWidget *label; GtkWidget *textfield; GtkTextBuffer *textbuffer; GtkWidget *dialog; long size; char *buffer; }; struct File *file[2]; GtkWidget *grid; GtkWidget *window; void initWindow(); struct File *initFile() { struct File *file = (struct File *)malloc(1*sizeof(struct File)); file->file = NULL; file->textbuffer = gtk_text_buffer_new(NULL); file->textfield = gtk_text_view_new_with_buffer(file->textbuffer); file->label = gtk_label_new(NULL); } int main(int argc, char *argv[]) { initWindow(); file[0] = initFile(); file[1] = initFile(); grid = gtk_grid_new(); gtk_container_add(GTK_CONTAINER(window), grid); /*Hier kommt es beim ausführen zum Segmentation Fault*/ gtk_grid_attach(GTK_GRID(grid), file[0]->label, 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(grid), file[0]->textfield, 1, 0, 1, 1); gtk_widget_show_all(window); gtk_main(); return 0; } void initWindow() { gtk_init(NULL, NULL); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "gtkDiff"); gtk_window_set_default_size(GTK_WINDOW(window), 300, 280); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); }
-
Du musst auch die Compilerwarnungen beachten.
In Zeile 28 fehlt ein
return file
.