Pull to refresh

Comments 3

Вообще говоря free(void*) допускает передачу nullptr...

If ptr is a null pointer, the function does nothing.

...

Notes

The function accepts (and does nothing with) the null pointer to reduce the amount of special-casing. Whether allocation succeeds or not, the pointer returned by an allocation function can be passed to free()

https://en.cppreference.com/w/c/memory/free

Согласен с Вами, что в функцию free можно передавать нулевой указатель. Цитирую из статьи: "Заметим, что сам по себе вызов функции free на нулевом указателе не является ошибкой."

Предупреждение PVS-Studio V575 прежде всего про то, что в функцию free странно передавать нулевой указатель. Возможно, указатель занулили до вызова free и получили утечку памяти. Может быть, опечатались в названии переменной, и хотели освободить память по другому адресу.

Возможно, анализом вариантов присваивания (или хотя бы при инициализации) можно было бы понять, что там может быть NULL, и, если нет проверки на NULL, то отмечать это низкоприоритетным сообщением, но опять-таки... to reduce the amount of special-casing.

Sign up to leave a comment.