Я использую инструменты из XCode 4.2.1, чтобы найти утечки памяти.Я обнаружил очень странную (по крайней мере, для меня) утечку памяти: (функция values_table_get_value
возвращает удвоение и output = stdout
) ![enter image description here](https://i.stack.imgur.com/XqKDR.png)
Два вопроса: действительно ли это утечка памяти?Как я могу это убрать?(Формат fprintf
%.3f
неверен для double
?
Чтобы показать, что утечка находится внутри fprintf, я изменил возврат с функции на 5.0
:
![enter image description here](https://i.stack.imgur.com/28aWw.png)
и перемещение возврата во временную переменную:
![enter image description here](https://i.stack.imgur.com/8Eypx.png)
и, если быть более точным, вот изображение кода asm, которое показываетчто утечка: ![enter image description here](https://i.stack.imgur.com/30Teo.png)
Я сделал очень простой тест: печать с использованием sprintf
+ fprintf
, но я получаю утечку в sprintf: ![enter image description here](https://i.stack.imgur.com/ff08x.png)
Iтакже попытался использовать printf
напрямую, и я обнаружил утечку.
Я действительно думаю, что проблема в формате.
Последняя попытка, чтобы показать, что не имеет ничего общего с моей функцией: ![enter image description here](https://i.stack.imgur.com/RVpxm.png)
Просто чтобы проверить, я выполнил с помощью valgrind: (values_table_print
это имя функции) valgrind --leak-check=full --show-reachable=yes ./leastsquares
![enter image description here](https://i.stack.imgur.com/nWnon.png)
Мои версии программного обеспечения: valgrind - версия: valgrind-3.7.0 gcc - версия i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (на основе сборки Apple Inc.5658) (LLVM buildд 2336,1,00)