Programmieren - alles kontrollieren 4.938 Themen, 20.667 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
Dreamforger thomas woelfer „was mich irritiert ist das du eine gp fault bekommst... beim drueber nachdenken...“
Optionen

Ich habe mein Problem zwar noch nicht lösen können, weis aber in der Zwischenzeit wenigstens wo warscheinlich der Wurm war.

In den Feldern sind zeilenweise linearisierte Felder abgespeichert, in denen ich mittels Interpolation aus Stützwerten Ebenen mache.
Ich habe bloß ca 5% des nicht veralgemeinerbaren Randverhaltens übersehen. (Das wiederum habe ich mit Massenhaft assert( )'s rausgefunden)

Offensichtlich habe ich, nachdem meine Lin-fkt das Feld verlassen hat, irgendwelche wichtigen Daten zerschossen.

Jetzt brauch ich erstmal 'ne Mütze Schlaf! (01:40). G'nacht

Dreamforger

P.S ich habe immer zwischen DEBUG und RELEASE modus rumgeschaltet und bin wohl im letzteren hängen geblieben...

bei Antwort benachrichtigen