2010-04-23 2 views
0

다음 메모리 누수가 발생합니다. 아마도 std :: string이 원인 일 수 있습니다. 어떻게 피할 수 있습니까?C++에서 다음과 같은 메모리 누수를 해결하는 것을 피하는 방법은 무엇입니까?

PLK: 23 bytes potentially leaked at 0xeb68278 

    * Suppressed in /vobs/ubtssw_brrm/test/testcases/.purify [line 3] 

    * This memory was allocated from: 

     malloc   [/vobs/ubtssw_brrm/test/test_build/linux-x86/rtlib.o] 

     operator new(unsigned) [/vobs/MontaVista/Linux/montavista/pro/devkit/x86/586/target/usr/lib/libstdc++.so.6] 

     operator new(unsigned) [/vobs/ubtssw_brrm/test/test_build/linux-x86/rtlib.o] 

     std::string<char, std::char_traits<char>, std::allocator<char>>::_Rep::_S_create(unsigned, unsigned, std::allocator<char> const&) [/vobs/MontaVista/Linux/montavista/pro/devkit/ 

x86/586/target/usr/lib/libstdc++.so.6] 

     std::string<char, std::char_traits<char>, std::allocator<char>>::_Rep::_M_clone(std::allocator<char> const&, unsigned) [/vobs/MontaVista/Linux/montavista/pro/devkit/x86/586/tar 

get/usr/lib/libstdc++.so.6] 

     std::string<char, std::char_traits<char>, std::allocator<char>>::string<char, std::char_traits<char>, std::allocator<char>>(std::string<char, std::char_traits<char>, std::alloc 

ator<char>> const&) [/vobs/MontaVista/Linux/montavista/pro/devkit/x86/586/target/usr/lib/libstdc++.so.6] 

     uec_UEDir::getEntryToUpdateAfterInsertion(rcapi_ImsiGsmMap const&, rcapi_ImsiGsmMap&, std::_Rb_tree_iterator<std::pair<std::string<char, std::char_traits<char>, std::allocator< 

char>> const, UEDirData >>&) [/vobs/ubtssw_brrm/uectrl/linux-x86/../src/uec_UEDir.cc:2278] 

     uec_UEDir::addUpdate(rcapi_ImsiGsmMap const&, LocalUEDirInfo&, rcapi_ImsiGsmMap&, int, unsigned char) [/vobs/ubtssw_brrm/uectrl/linux-x86/../src/uec_UEDir.cc:282] 

     ucx_UEDirHandler::addUpdateUEDir(rcapi_ImsiGsmMap, UEDirUpdateType, acap_PresenceEvent) [/vobs/ubtssw_brrm/ucx/linux-x86/../src/ucx_UEDirHandler.cc:374] 
+1

다음과 같이 힙에 문자열 객체를 할당하고 있습니다 : string * ps = new string(); ? 표준 라이브러리가 새어 나올 가능성은 거의 없습니다. Purify는 종종 오 탐지를합니다. –

답변

0

내가 한 번 Valgrind의 내가 std::string에서 누수가 있었다 표시되는 경우가 있었다, 그러나 나는 어떻게 볼 수 없었다. 가치가있는 문자열을 가진 다른 객체가 누출되었다는 사실이 밝혀졌지만 Valgrind는 누출 된 문자열 메모리 (대다수가 유출되었습니다)를 올바르게 잡았습니다. uec_UEDir이 문자열을 올바르게 관리하지 못하거나 자체가 유출 된 것으로 의심됩니다. 나는 실제로 신중한 코드 검사를 통해 나의 문제를 발견했다.

관련 문제