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 .


Anmelden zum Antworten