我已经实现了一个方法来重新分配struct的数组字段。 Valgrind大喊这会导致内存泄漏。
4,146个街区中的122,689,764(2,569,440直接,120,120,324个间接)字节肯定会在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++;
}