Я реализовал метод для перераспределения поля массива структуры.Вальгринд кричит, что это вызывает утечку памяти.
122 689 764 (2 569 440 прямых, 120 120 324 косвенных) байта в 4146 блоках определенно потеряны в записи потерь 39 из 40
Вот мой метод.Есть мысли о том, почему это может произойти?Я позаботился о том, чтобы освободить nodeToReallocate->childPtrTable
в конце.И в любом случае в этом случае, я думаю, valgrind укажет на исходный malloc как на проблему, верно?
void reallocatePtrTable(mmUctNode* nodeToReallocate){
if(nodeToReallocate->ptrRowIndex<nodeToReallocate->PtrTableCapacity){
return;
}
int newSize = (nodeToReallocate->PtrTableCapacity)*INCREASE_FACTOR;
if(debuglog)printf("(re)Allocating %p with %d bytes. ", nodeToReallocate->childPtrTable,sizeof(mmUctNode*)*newSize);
fflush(stdout);
mmUctNode** tmp =(mmUctNode**)realloc(nodeToReallocate->childPtrTable,sizeof(mmUctNode*)*newSize);
if(!tmp){
puts("Re-allocation failed");
free(nodeToReallocate->childPtrTable);
dump();
exit(EXIT_FAILURE);
}
nodeToReallocate->childPtrTable=tmp;
if(debuglog)printf(" Got %p\n",nodeToReallocate->childPtrTable);
nodeToReallocate->PtrTableCapacity=newSize;
tableReallocations++;
}