Salut, ai dreptate.<br>In timp ce scoteam cod, am observat urmatoarea chestie :<br>Daca rulez codul asta :<br><br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; &quot;\n&gt; &quot;;<br>&nbsp;&nbsp;&nbsp; string line;<br>&nbsp;&nbsp;&nbsp; getline(cin, line);
<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; command_t* root = NULL;<br>&nbsp;&nbsp;&nbsp; parse_line(line.c_str(), &amp;root);<br><br>&nbsp;&nbsp;&nbsp; free_parse_memory();<br><br>&nbsp;&nbsp;&nbsp; exit(0);<br><br>}<br><br>Da outputul asta :<br><br>==2981== Memcheck, a memory error detector.
<br>==2981== Copyright (C) 2002-2006, and GNU GPL&#39;d, by Julian Seward et al.<br>==2981== Using LibVEX rev 1606, a library for dynamic binary translation.<br>==2981== Copyright (C) 2004-2006, and GNU GPL&#39;d, by OpenWorks LLP.
<br>==2981== Using valgrind-3.2.0-Debian, a dynamic binary instrumentation framework.<br>==2981== Copyright (C) 2000-2006, and GNU GPL&#39;d, by Julian Seward et al.<br>==2981== For more details, rerun with: -v<br>==2981== 
<br>==2981== My PID = 2981, parent PID = 2259.&nbsp; Prog and args are:<br>==2981==&nbsp;&nbsp;&nbsp; ./tema1<br>==2981== <br>--2981-- DWARF2 CFI reader: unhandled CFI instruction 0:50<br>--2981-- DWARF2 CFI reader: unhandled CFI instruction 0:50
<br>==2981== <br>==2981== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 17 from 1)<br>==2981== malloc/free: in use at exit: 17 bytes in 1 blocks.<br>==2981== malloc/free: 12 allocs, 11 frees, 209 bytes allocated.<br>
==2981== For counts of detected errors, rerun with: -v<br>==2981== searching for pointers to 1 not-freed blocks.<br>==2981== checked 108,104 bytes.<br>==2981== <br>==2981== 17 bytes in 1 blocks are possibly lost in loss record 1 of 1
<br>==2981==&nbsp;&nbsp;&nbsp; at 0x401B8C7: operator new(unsigned) (vg_replace_malloc.c:163)<br>==2981==&nbsp;&nbsp;&nbsp; by 0x40B0C6A: std::string::_Rep::_S_create(unsigned, unsigned, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/libstdc++.so.6.0.8)
<br>==2981==&nbsp;&nbsp;&nbsp; by 0x40B1BE9: std::string::_Rep::_M_clone(std::allocator&lt;char&gt; const&amp;, unsigned) (in /usr/lib/libstdc++.so.6.0.8)<br>==2981==&nbsp;&nbsp;&nbsp; by 0x40B35E7: std::string::reserve(unsigned) (in /usr/lib/libstdc++.so.6.0.8)
<br>==2981==&nbsp;&nbsp;&nbsp; by 0x4089126: std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::getline&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;(std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;, char) (in /usr/lib/libstdc++.so.6.0.8)
<br>==2981==&nbsp;&nbsp;&nbsp; by 0x40A2178: std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::getline&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;(std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;) (in /usr/lib/libstdc++.so.6.0.8)
<br>==2981==&nbsp;&nbsp;&nbsp; by 0x80493E9: main (tema1.cpp:875)<br>==2981== <br>==2981== LEAK SUMMARY:<br>==2981==&nbsp;&nbsp;&nbsp; definitely lost: 0 bytes in 0 blocks.<br>==2981==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; possibly lost: 17 bytes in 1 blocks.<br>==2981==&nbsp;&nbsp;&nbsp; still reachable: 0 bytes in 0 blocks.
<br>==2981==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; suppressed: 0 bytes in 0 blocks.<br><br><br>Daca rulez codul asta (diferenta este ca in loc sa dau &quot;exit(0)&quot; dau &quot;return 0&quot; ):<br><br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; &quot;\n&gt; &quot;;
<br>&nbsp;&nbsp;&nbsp; string line;<br>&nbsp;&nbsp;&nbsp; getline(cin, line);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; command_t* root = NULL;<br>&nbsp;&nbsp;&nbsp; parse_line(line.c_str(), &amp;root);<br><br>&nbsp;&nbsp;&nbsp; free_parse_memory();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br>atunci valgrind spune ca totul e ok - &quot;no memory leaks possible&quot;.
<br>