LINUX.ORG.RU

Утечка памяти в примере использования libpng


0

2

Пример в архиве с исходниками libpng.

Открываем contrib/gregbook/readpng.c. Обращаем внимание вот на что:

1) Функция readpng_get_image ставит setjmp в котором уничтожает png_ptr и info_ptr и возращает NULL в случае прихода туда по longjmp. Это случится если в какой-нибудь png-шной функции произойдёт ошибка.

2) Затем выделяется память image_data = (…)malloc(…) и row_pointers = (…)malloc(…).

3) А вот далее вызывается png_read_image(…), и если в ней произойдёт ошибка, то из неё будет тот самый longjmp, при этом image_data и row_pointers не будут удалены!

Правда image_data потом удаляется в readpng_cleanup (если её вызовут), а вот row_pointers так и останется не удалённым.

Я нигде не ошибся?

Попробуй проверить valgrind-ом.

Legioner ★★★★★
()

Похоже на то.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.