debug assertion failed
-
Hallo, .... wer kann mir helfen?
delete buffcopy1; // hier bekomme ich den folgenden Fehler buffcopy1= (BYTE*) malloc(230400); for (int i=0; i< 240;i++) //y-Richtung { for (int j=0; j< 320; j++)//x- Richtung { ... } } return buffcopy; }
ich habe an der kommentierten Stelle
bekomme ich folgende Fehlermeldung und weiss gar nicht wonach ich suchen oder wie ich den Fehler beheben soll, da ich das selbe schon einmal in einer anderen Klasse gemacht habe. Fehlerfrei natürlichhier gibt es die Fehlermeldung:
http://img221.imageshack.us/my.php?image=assertzi5.jpgDanke schon einmal im Vorraus!!!
-
schön, dass du uns den code NACH dem fehler zeigst, und nicht sinnvollerweise den teil VOR ihm
-
Da du direkt nachdem delete malloc verwendest, verwendest du sicherlich auch vor dem delete malloc. Verwende new statt malloc und es läuft so wie du es willst.
Wenn du nen array brauchst new[] und delete[]
-
otze schrieb:
schön, dass du uns den code NACH dem fehler zeigst, und nicht sinnvollerweise den teil VOR ihm
das war der Anfang der Methode, es fehlt niur der Funktionskopf
-
Und warum gibst Du speicher frei bevor Du ihn anforderst?
-
Dieser Thread wurde von Moderator/in rapso aus dem Forum Spiele-/Grafikprogrammierung in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hm, solange im Quellcode noch ein delete steht gehört das eigentlich nach C++
-
Der Fehler tritt auf, wenn man Speicher freigeben will, der vorher nicht allokiert wurde.
-
Oder hat er vielleicht Speicher deleted der mit malloc() geholt wurde? Oder ist delete gar ein typedef?
-
Das wäre ja dann mal nen echt guter Name für nen typedef :x
-
Meine Vermutungen:
1. Du hast den Pointer nicht inizalisiert und löscht somit irgend einen zufälligen Inhalt im Speicher.
BYTE *buffcopy1=NULL;
2. Dein Funktionskopf sieht so aus
BYTE* MachWas(BYTE* buffcopy1)
Dan könntest Du den Pointer in der Funktion nicht deallokieren.
So währe meine Idee:void MachWas(BYTE** buffcopy1) { int i=0; // änderung für die c'ler :) int j=0; if (*buffcopy1!=NULL) free(*buffcopy1); *buffcopy1= (BYTE*) malloc(230400); for (i=0; i< 240;i++) //y-Richtung { for (j=0; j< 320; j++)//x- Richtung { // ... } } } void main(void) { BYTE *buffer=NULL; MachWas(&buffer); }