Как освободить память, которая когда-то была выделена вначале, а затем перераспределена и выделена сразу после этого? Этот ptr был моей попыткой, но valgrind говорит, что было 6 аллоков и 6 освобождений, но 90 байтов в 3 блоках определенно потеряны.
char *textInFile = (char *) calloc(currentLength + 1, sizeof(char) * currentLength);
char *currentLine = (char *) calloc(currentLength + 1, sizeof(char) * currentLineLength);
...
while ((textInFile[index] = getc(f)) != EOF) {
if (index > currentLength - 3) {
currentLength += 10;
ptr = textInFile;
textInFile = (char *) realloc(textInFile, currentLength);
textInFile = (char *) calloc(currentLength, sizeof(char) * currentLength);
free(ptr);
}
...
if (textInFile[index] == '\n') {
int k = 0;
for (int i = previousIndex; i < index; i++) {
if (k > currentLineLength - 3) {
currentLineLength += 10;
ptr = currentLine;
currentLine = (char *) realloc(currentLine, currentLineLength);
currentLine = (char *) calloc(currentLineLength, sizeof(char) * currentLineLength);
free(ptr);
}
...
index++;
}
...
free(textInFile);
free(currentLine);
== 4426 == РЕЗЮМЕ КУЧИ:
== 4426 == используется на выходе: 90 байт в 3 блоках
== 4426 == общее использование кучи: 9 выделений, 9 освобождений, выделено 14 668 байт
==4426==
== 4426 == РЕЗЮМЕ УТЕЧКИ:
== 4426 == точно потеряно: 90 байт в 3 блоках
== 4426 == косвенно потеряно: 0 байт в 0 блоках
== 4426 == возможно потеряно: 0 байт в 0 блоках
== 4426 == все еще достижимо: 0 байт в 0 блоках
== 4426 == подавлено: 0 байт в 0 блоках