[cdl-studenti] [OOP] Eliberare automata de memorie.
marius Dragus
mdragus at gmail.com
Sat Mar 6 16:20:35 EET 2010
Salut,
Incerc sa scriu o clasa "mine" in C++ care sa permita operatorul +.
Problema este ca fiecare obiect aloca dinamic un array, iar o operatie de
genul x =a +b+c ar cauza memory leak-uri.
Cum s-ar putea face asta?
Mai jos este codul. Mentin un contor al constructorilor/destructorilor, si
se vede evident ca se obtin memory leakuri.
Mersi,
Marius
/*************************CODE*********************/
#include <iostream>
int count = 0;
using namespace std;
struct mine
{
int * u;
mine()
{
u = new int[10000];
count++;
}
~mine()
{
delete[] u;
count--;
}
mine & operator=(const mine & x)
{
//cout << "assign" << endl;
u = x.u;
}
};
mine& operator+(const mine & x, const mine &y)
{
mine * ret = new mine;
return *ret;
}
int main()
{
mine a, b, c, d;
mine e;
for (int i = 0; i<10; i++)
{
e = a + b + c + d;
}
cout << count << "\n"; // afiseaza 35 desi ar trebui sa fie 5
return 0;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rosedu.org/pipermail/cdl-studenti/attachments/20100306/ce548732/attachment.htm>
More information about the cdl-studenti
mailing list