У меня очень простая программа на C++.std :: cout вызывает утечку памяти
#include <iostream>
int main()
{
std::cout << "HI" << std::endl;
return 0;
}
Я скомпилирую это на Mac с помощью команды c++ --std=c++11 leak.cpp
.
Когда я отладка это с valgrind --leak-check=full ./a.out
, я получаю следующий результат:
==2187== HEAP SUMMARY:
==2187== in use at exit: 38,906 bytes in 429 blocks
==2187== total heap usage: 508 allocs, 79 frees, 45,074 bytes allocated
==2187==
==2187== LEAK SUMMARY:
==2187== definitely lost: 0 bytes in 0 blocks
==2187== indirectly lost: 0 bytes in 0 blocks
==2187== possibly lost: 0 bytes in 0 blocks
==2187== still reachable: 4,096 bytes in 1 blocks
==2187== suppressed: 34,810 bytes in 428 blocks
==2187== Reachable blocks (those to which a pointer was found) are not shown.
==2187== To see them, rerun with: --leak-check=full --show-leak-kinds=all
Оказывается, есть 4096 байт, которые «все еще достижимы». Если я удалю оператор cout
, то больше нет «все еще доступных» байтов.
Почему это так, что вывод std::cout
вызывает утечку памяти?
Вы пробовали [это] (http://stackoverflow.com/questions/30376601/valgrind-memory-still-reachable-with-trivial-program-using-iostream)? – doqtor