Salut,<br><br>Incerc sa scriu o clasa "mine" in C++ care sa permita operatorul +.<br>Problema este ca fiecare obiect aloca dinamic un array, iar o operatie de genul x =a +b+c ar cauza memory leak-uri.<br><br>Cum s-ar putea face asta?<br>
<br>Mai jos este codul. Mentin un contor al constructorilor/destructorilor, si se vede evident ca se obtin memory leakuri.<br><br>Mersi,<br>Marius<br><br>/*************************CODE*********************/<br><br>#include <iostream><br>
<br>int count = 0;<br>using namespace std;<br><br>struct mine<br>{<br> int * u;<br> mine()<br> {<br> u = new int[10000];<br> count++;<br> }<br><br> ~mine()<br> {<br> delete[] u;<br> count--;<br>
}<br><br> mine & operator=(const mine & x)<br> {<br> //cout << "assign" << endl;<br> u = x.u;<br> }<br><br><br>};<br><br>mine& operator+(const mine & x, const mine &y)<br>
{<br> mine * ret = new mine;<br> return *ret;<br>}<br><br>int main()<br>{<br><br> mine a, b, c, d;<br> mine e;<br><br><br> for (int i = 0; i<10; i++)<br> {<br> e = a + b + c + d;<br> <br> }<br>
<br> cout << count << "\n"; // afiseaza 35 desi ar trebui sa fie 5<br><br> return 0;<br>}<br><br>