mc_gulasch
Erfahrenes Mitglied
Hallo zusammen,
ich hab ein relativ großes und komplexes Programm vor mir, welches Stringverarbeitung
macht.
Bei einer bestimmten Kombination von Strings, hab ich das Problem, dass das Konstrukt
mittels free() nicht mehr freigegeben werden kann. MSVC++ bricht mit der Meldung
Den Code des ges. Projekts zu posten macht wenig Sinn und wenn es ne Speicher-G´schicht ist (wonach es für mich aussieht
) , dann wirds (zumindest für mich) auch schwierig das entscheidende zu posten.
Kann mir jemand sagen, woran das liegen könnte, bzw. wie ich am besten beim Debuggen vorgehe. Was natürlich auch ganz wunderbar wäre
wenn mir jemand erklärt wie man Kontrollfunktionen für die Speicherverwaltung schreibt, da ich auf dem Gebiet die letzte Krücke bin.
Danke euch, wenn euch was unklar ist oder ich noch was posten soll, bitte Bescheid sagen.
Danke sagt schonmal das Gulasch!
//EDIT:
Der Debugger nach dem "Retry" sagt:
geht dann in die Datei "DBGHEAP.C"
in diesen Abschnitt:
EDIT2//
Ich glaube es hat sich erledigt. Ich hab auf dieser Seite nen guten Hinweis gefunden und scheinbar hab ich wohl tatsächlich einen auf n Zeichen angelegten String mit mehr als n Zeichen gefüllt, was dann schließlich den Speicher geschmissen hat. Hoffe mal das wars.
Jetzt hab ich zwar nen neuen Fehler, aber an ner komplett anderen Stelle
Wünscht mir Glück, ich mach hier mal dicht.
ich hab ein relativ großes und komplexes Programm vor mir, welches Stringverarbeitung
macht.
Bei einer bestimmten Kombination von Strings, hab ich das Problem, dass das Konstrukt
C:
checksum = (int*) calloc(strlen(string)+1,sizeof(int));
Code:
Debug Error!
Programm: *meins*
DAMAGE: after normal block (#5455) at 0x0073BFC0
Den Code des ges. Projekts zu posten macht wenig Sinn und wenn es ne Speicher-G´schicht ist (wonach es für mich aussieht

Kann mir jemand sagen, woran das liegen könnte, bzw. wie ich am besten beim Debuggen vorgehe. Was natürlich auch ganz wunderbar wäre

Danke euch, wenn euch was unklar ist oder ich noch was posten soll, bitte Bescheid sagen.
Danke sagt schonmal das Gulasch!
//EDIT:
Der Debugger nach dem "Retry" sagt:
Code:
Info: User breakpoint called from Code at 0x40705f
in diesen Abschnitt:
C:
if (!(_crtDbgFlag & _CRTDBG_CHECK_ALWAYS_DF))
{
/* check no-mans-land gaps */
if (!CheckBytes(pHead->gap, _bNoMansLandFill, nNoMansLandSize))
_RPT3(_CRT_ERROR, "DAMAGE: before %hs block (#%d) at 0x%08X.\n",
szBlockUseName[_BLOCK_TYPE(pHead->nBlockUse)],
pHead->lRequest,
(BYTE *) pbData(pHead));
if (!CheckBytes(pbData(pHead) + pHead->nDataSize, _bNoMansLandFill, nNoMansLandSize))
_RPT3(_CRT_ERROR, "DAMAGE: after %hs block (#%d) at 0x%08X.\n",
szBlockUseName[_BLOCK_TYPE(pHead->nBlockUse)],
pHead->lRequest,
(BYTE *) pbData(pHead)); //<-----Hier ist laut Debugger der Fehler (Line 1067)
}
EDIT2//
Ich glaube es hat sich erledigt. Ich hab auf dieser Seite nen guten Hinweis gefunden und scheinbar hab ich wohl tatsächlich einen auf n Zeichen angelegten String mit mehr als n Zeichen gefüllt, was dann schließlich den Speicher geschmissen hat. Hoffe mal das wars.
Jetzt hab ich zwar nen neuen Fehler, aber an ner komplett anderen Stelle

Zuletzt bearbeitet: