Я использую инструменты из XCode 4.2.1, чтобы найти утечки памяти.
Я обнаружил очень странную (по крайней мере, для меня) утечку памяти:
(Функция values_table_get_value
возвращает значение типа double, а output = stdout
)
Вот два вопроса:
Это настоящая утечка памяти?
Как я могу это очистить? (Формат fprintf
%. 3f
неверен для double
?
) Чтобы показать, что утечка находится внутри fprintf, я изменил возврат из функция 5.0
:
и перемещение возврата во временную переменную:
, а если быть более точным, вот изображение asm-кода, которое показывает, что утечка:
Я провел очень простой тест: распечатал с использованием sprintf
+ fprintf
, но у меня обнаружилась утечка на sprintf:
Я также пытался использовать printf
напрямую, и у меня обнаружилась утечка.
Я действительно думаю, что проблема в формате.
Последняя попытка, чтобы показать, что ничего не связано с моей функцией:
Чтобы проверить, я выполнил с valgrind: ( values_table_print
- это имя функции)
valgrind --leak-check = full --show-reachable = yes ./leastsquares
Мои версии программного обеспечения: valgrind - версия: valgrind-3.7.0 gcc --version i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (на основе сборки 5658 Apple Inc.) (сборка LLVM 2336.1.00)