Вот мой код:Valgrind ошибка с станд :: CIN
std::string getword()
{
std::string temp;
std::cin >> temp;
return temp;
}
Valgrind выдает ошибку на темп линии станд :: CIN >>.
Вот выход Valgrind для тех, кто спрашивает:
HEAP SUMMARY:
==18490== in use at exit: 33 bytes in 1 blocks
==18490== total heap usage: 397 allocs, 396 frees, 12,986 bytes allocated
==18490==
==18490== 33 bytes in 1 blocks are possibly lost in loss record 1 of 1
==18490== at 0x4C2AF8E: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==18490== by 0x4EEE3B8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==18490== by 0x4EEF127: std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==18490== by 0x4EEF20F: std::string::reserve(unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==18490== by 0x4EA7D14: std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==18490== by 0x401681: getword() (netsim.cc:29)
==18490== by 0x401F6E: main (netsim.cc:96)
==18490==
==18490== LEAK SUMMARY:
==18490== definitely lost: 0 bytes in 0 blocks
==18490== indirectly lost: 0 bytes in 0 blocks
==18490== possibly lost: 33 bytes in 1 blocks
==18490== still reachable: 0 bytes in 0 blocks
==18490== suppressed: 0 bytes in 0 blocks
==18490==
==18490== For counts of detected and suppressed errors, rerun with: -v
==18490== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2)
netsim.cc:96 является вторым вызовом GetWord() в программе. Этот код читает
std::string network = getword();
netsim.cc:29 - это код для самого getword(). Строка 29 - линия
std::cin >> temp
Я все еще не понимаю, почему это произошло, но мне удалось решить проблему. я имел код
std::string s = getword();
выше
немедленноstd::string network = getword();
Я сделал оба с и сетевые глобальные переменные и как-то этот вопрос был решен.
Если кто-нибудь может объяснить, почему это было, хотя я был бы благодарен.
Какая ошибка - вам не кажется, что вы должны добавить эту информацию на этот вопрос? – user93353
Я согласен с @ user93353. «Valgrind бросает ошибку» не особенно полезно. Помните, редактируйте свой пост, чтобы положить его на нас? <3 – 2013-04-15 04:55:07