Я использую инструменты из 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 --version: valgrind-3.7.0 gcc --версия i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (на основе сборки Apple Inc. 5658) (LLVM build 2336.1.00)