ogólnie rzecz biorąc mam napisaną klasę
której konstruktor i destruktor wyglądają następująco:
total::total()
{
length=1;
znak = new unsigned int[length];
znak[0]=0;
}
total::~total()
{
delete [] znak;
znak=NULL;
}
napisałem metode która zmienia mi rozmiar tej tablicy...
gdy tego potrzebuję
void total::realokacja(int dlugosc)
{
//zapamietuje poczatek starej tablicy
unsigned int *tmp = &znak[0];
//tworze nowa tablice z nowym rozmiarem
znak = new unsigned int[dlugosc];
for (int j=0; j<length; ++j) //przepisuje stara tablice do nowej
znak[j] = tmp[j];
for (int j=length; j<dlugosc; ++j) //zeruje ostatni element nowej tablicy
znak[j] = 0;
//usuwam stara tablice
delete [] tmp;
tmp=NULL;
length=dlugosc;
}
w przeciążonych operatorach tworzę sobie zazwyczaj
zmienną mojego typu
total z //wynik
na której pracuje itp itd
a przed końcem operatora np operatora += lub *= itp
robię tak:
(*this)=z;
return *this;
problem w moim mniemaniu wygląda tak, że generuje mi błąd Heap Corruption
czyli usuwam bądź cokolwiek robię źle ze wskaźnikami...
możecie mi powiedzieć czy coś w powyżej zamieszczonych opisach jest nie poprawne ??