Problem mit struct-Typen
-
Hallo,
ich habe einen Datentyp
typedef struct { int width; int height; } Size;ich lege auch dazu alles an:
Size* frame_size;wenn ich nun aber Werte zuweisen will:
frame_size->width = width; frame_size->height = height;bekomme ich beim Ausführen die Meldung:
Unbehandelte Ausnahme bei 0x0042cf42 in Test.exe: 0xC0000005: Zugriffsverletzung-Schreibposition 0x00000000.Was mache ich Falsch?
Gruß und Dank!
-
Du hast keinen Speicher reserviert.
Entweder so anlegen:
Size frame_size;
und so benutzen:
frame_size.width = width;
frame_size.height = height;oder dir speicher mit malloc oder new besorgen und das freigeben nicht vergessen.
-
so wie du zuweisen willst, musst du vorher eine Instanz der Struktur erstellen.
Size *frame_size;
erstellt nur einen Zeiger. der Inhalt der Variablen ist eine Adresse. Alles, was ab dieser Adresse steht, wird als Size interpretiert.
Nun musst du ihm aber noch ein Objekt geben. Das Betriebssystem will den Speicher für Size allokiert haben. Dies geht beispielsweise mitframe_size = new Size;am Ende des Programmes solltest du dann noch aufräumen:
delete frame_size;Soo, ich hoffe, dass dir das weiterhilft..
-
Danke,
ja das böse new.
Der Fehler unterläuft mir hoffentlich nicht mehr!