I folgende Struktur haben:[C] Dynamische Zuordnung von Speicher-Struktur, bezogen auf GTK
typedef struct
{
GtkWidget* PoziomaLinijka;
GtkWidget* PionowaLinijka;
GtkWidget* Label1;
GtkWidget* Label2;
gint x,y;
} StrukturaDrawing;
und ich brauche es auf dem Heap zu reservieren, da ich später Funktionen haben, die diese Struktur verwendet und ich weiß nicht möchte globale Variablen verwenden. Also habe ich es wie folgt vergeben:
StrukturaDrawing* Wsk;
Wsk = (StrukturaDrawing*)malloc(sizeof(StrukturaDrawing));
if (!Wsk)
{
printf("Error\n");
}
Und es spielt keine Fehler zurückgegeben und arbeitet auch hervorragend mit anderen Funktionen, funktioniert es so, wie ich es wollte, so endlich arbeiten, ich wollte, dass der Speicher freizugeben und hier ist Problem weil im Debug-Modus Compilator Hündinnen:
First-Chance-Ausnahme bei 0x102d12b4 in GTK.exe: 0xC0000005: Zugriffsverletzung Leseort 0xfffffffc. Nicht behandelte Ausnahme bei 0x102d12b4 in GTK.exe: 0xC0000005: Zugriffsverletzung beim Lesen der Position 0xfffffffc.
Ich verbinde Rückruf an meine Funktion, wie folgt aus:
g_signal_connect(G_OBJECT(Okno), "destroy", G_CALLBACK(Wyjscie), Wsk);
Funktion, die es annehmen, um Speicher und in der Nähe Programm zu befreien:
void Wyjscie(GtkWindow* window, GdkEvent* event, StrukturaDrawing* data)
{
gtk_main_quit();
free(data);
data = NULL;
}
Jede Hilfe wirklich zu schätzen.