Mam program, który wdraża bazę danych ludzi i jego firm. Stworzyłem dynamiczną tablicę wskaźników dla członków klasy zamiast dynamicznej tablicy członków klasy, ponieważ kopiowanie jest szybsze.Niezgodność Usuń
Mam wersję, która działa, ale valgrind pokazuje niezgodność usunąć w destructor (usuwanie dB)
CCompany** db;
~CCompanyIndex (void)
{
for(unsigned i=0;i<len;i++)
{
/*cout<<"dealloc:"<<db[i]<<endl;*/
delete db[i];
}
delete db;
}
CCompanyIndex (void)
{
max=1000;
len=0;
db=new CCompany*[max];
}
używam również dodać
CCompany* newIt=new CCompany(oName,oAddr,cName,cAddr);
Więc próbowałem następujący kod, który uważam za prawidłowe poprzednio
~CCompanyIndex (void)
{
delete [] db;
}
Ale wtedy cała pamięć przydzielona przez dodanie metody nie jest zwolniona.
(1) Czy znasz [Zasada Trzech] (http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three)? (2) Czy brałeś pod uwagę inteligentne wskaźniki i pojemniki zamiast surowych wskaźników i dynamicznie przydzielanej pamięci? –