Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

new operator in VC++ 5.0 produziert Schutzverletzung in Kernel

(Anonym) / 5 Antworten / Flachansicht Nickles

wenn ich mit new ein Feld (Größe ~3600) Einträge (a 32 Byte) beantrage geht das beim ersten mal gut. Später brauche ich ein zweites Feld(~7100 Einträge a 32 Byte). Compile, Link, Build alles kein Problem. Bei der Ausführung bricht er jedoch, genau bei der Speicherreservierung ab. Der Aufruf-Stack ist von new über malloc bis in die KERNEL vorgedrungen und dann geht nix mehr.
"Unhandled Exception in ... (KERNEL32.DLL) 0x0000005 Access Violation"

int i = 3600;
Point* t;
t = new Point[i];
...
i = 7100;
Point* g;
g = new Point[i]; // hier passierts

Speicher hab ich noch genug (mit GlobalMemoryStatus getestet)
kann mir jemand helfen? Welche gründe kann eine Access Violation haben?

Danke fürs lesen,
Dreamforger

bei Antwort benachrichtigen
thomas woelfer Dreamforger „ Ich habs versucht, dummerweise funktioniert s in kleineren Projekten. Und den...“
Optionen

was mich irritiert ist das du eine gp fault bekommst... beim drueber nachdenken faellt mir dazu ein: vermutlich nimmst du nicht das debug build sondern eine release build zum testen. wuerde als erstes mal empfehlen ein debug build herzunehmen --- vermute das du dann bereits vor dem gp eine assertion failure bekommst (die debug variante der speicherbibliothek ist ganz gut): das sollte mehr sinnvolle hinweise auf den grund des problems geben.

ich vermute das du beim kopieren der daten den block einfach zerstoerst... aber das sollte bei der debug variante schnell rauskommen.

WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen