Hi all,
In my c++ application (Linux Fedora Core2) i am using the STL string , for memory leak check i used the valgrind , i set the environment variable as follows export GLIBCPP_FORCE_NEW=1 (or) GLIBCXX_FORCE_NEW=1 , the valgrind report showing memory leak in the STL string, Please tell me whether STL string have memory leak or not ?
Part of Valgrind leak summery:
-------------------------------
==3926== 187 bytes in 11 blocks are possibly lost in loss record 221 of 245
==3926== at 0x47BFE0F: operator new(unsigned int) (vg_replace_malloc.c:214)
==3926== by 0x1806F8: std::__default_alloc_template<true, 0>::allocate(unsigned int) (in /usr/lib/libstdc++.so.5.0.5)
==3926== by 0x1860F7: std::string::_Rep::_S_create(unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc++.so.5.0.5)
==3926== by 0x1861CD: std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned int) (in /usr/lib/libstdc++.so.5.0.5)
==3926== by 0x183DEC: std::string::reserve(unsigned int) (in /usr/lib/libstdc++.so.5.0.5)
==3926== by 0x1842F1: std::string::append(char const*, unsigned int) (in /usr/lib/libstdc++.so.5.0.5)
==3926== by 0x184004: std::string::append(char const*) (in /usr/lib/libstdc++.so.5.0.5)
==3926== by 0x8059335: std::basic_string<char, std::char_traits<char>, std::allocator<char> > std:
perator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) (basic_string.h:890)
==3926== by 0x805913D: NodeWatch::NodeWatch(Watch*, std::string, Threshold**, std::string) (NodeWatch.cpp:6)
==3926== by 0x8056512: PerformanceMonitor::AddWatches(xercesc_3_0:
OMNode*) (PerformanceMonitor.cpp:224)
==3926== by 0x8052A32: NodeMonitor::NodeMonitor(xercesc_3_0:
OMNode*) (NodeMonitor.cpp:20)
==3926== by 0x8051824: Node::Node(xercesc_3_0:
OMNode*) (Node.cpp:27)
Part of My code:
-----------------
valgrind showing leak in the following line:
id = "<" + responseId + ">";
NodeWatch::NodeWatch(Watch *watchInstance,string responseId, Threshold **thresholdArray, string pollinterval)
{
string id;
watch = watchInstance;
id = "<" + responseId + ">"; // Valgrind showing leak in this line
thresholds = thresholdArray;
pollInterval = atoi(pollinterval.c_str()) / 10;
}
Thanks,
Barani