Причина, которую я могу придумать, заключается в том, что Item *items = NULL
'items' является глобальной переменной.Итак, что касается инструмента проверки утечки памяти, память все еще доступна из кода, поэтому можно предположить, что вам все еще нужна эта память.
Atleast IBM Rational Purify работает таким образом.В IBM Rational Purify вы можете выбрать опцию для отображения «Используемая память», и он будет отображать этот указатель и количество байтов, которыми он владеет.
Обратите внимание, что память считается утечкой, только когда нетпеременные-указатели, содержащие этот адрес, и он также не был освобожден.
Например:
int main()
{
function();
}
int function()
{
char *ptr = NULL;
ptr = malloc(10);
return 0;
}
Теперь, в приведенном выше примере, как только вы вернетесь из функции, у вас не будет никакого способадля доступа к переменной ptr
.Итак, память, выделенная для ptr, определенно потеряна