[Heap korrupt] realloc(), memcpy() und memmove()
-
Zur besseren Vorstellung:
Ich lese eine Datei ein die nach bestimmten Werten durchsucht wird. Diese Werte werden dann durch Werte ersetzt, die der Benutzer eingeben kann. Anschließend wird die Datei unter anderen Namen auf der Festplatte gespeichert.Die Daten aus der Datei sind eingelesen und der Benutzer kann die Funktion 1 aufrufen. Dort wird der Inhalt der Datei in einen temporären Speicher kopiert:
BYTE *bTemp = (BYTE*) malloc(uSize); // Daten in temporären Speicher kopieren: memcpy(bTemp, bContent, uSize);In Funktion 1 wird Funktion 2 aufgerufen (der temporäre Speicher wird mittels Pointer an Funktion 2 übergeben). Dort wird, wie beschrieben, ein Wert gesucht und ersetzt.
Wenn der gesuchte String genau so lang ist wie der von Benutzer Eingegebene, dann wird nur kopiert, andernfalls wird durch realloc() der reservierte Speicher erweitert / gekürzt.
Mit memmove() "verschiebe" ich dann nicht zuersetzende Daten.Jetzt tritt ein Fehler auf (Heap korrupt).
Hab durch testen rausgefunden dass, wenn ich in Funktion 1 (wo ich den Speicher mit malloc() erzeuge) mit realloc() den Speicher erweitere, kein Fehler auftritt!? Darf ich nicht in nem anderen Funktionsstack den Speicher erweitern??
Gruß,
Marco
-
Doch darfst Du. Aber ich vermute mal, DEIn memmove zersört dennoch den Heap.
-
Hab den Fehler (wieder mal bei mir) gefunden.
Hab einfach in nen ungültigen Bereich der Adresse kopiert

Danke trotzdem