Valgrind не говорит, что утечка происходит в строке realloc
- он говорит, что память, выделенная этой строкой realloc
, является утечкой памяти, в конце концов. Вальгринд не знает, где, хотя - он просто знает, что у вас больше нет ссылки на эту память, так что было бы невозможно free
ее использовать. (ОП может знать это, но ясно, что многие из ответивших не знают!)
Короче говоря, код, который вы вставили, не вызывает проблемы (хотя проблема, которую поднимает Майкл Берр, определенно реальна, но, поскольку вы даже не проверяете NULL
, возвращенный из realloc
.. .)
Где-то в вашем коде должен быть free(Hash->Columns)
, которого сейчас нет. Найдите это место - вероятно, непосредственно перед освобождением Hash
- и добавьте его.