W jezyku c byla funkcja realloc(), do czego sluzyla wiekszosc osob wie. Czy jest podobna funkcja w C++, analogiczna do new i delete?
Niestety nie ma. Realloc natomiast nie powinno byc mieszane z new/delete. Mozna oczywiście zezygnować z operatorów na rzecz funkcji malloc/free - choc realloc bardzo ladnie dziala w ich zastepstwie (odpowiednio potraktowane może pracować za nie obie).
// Sprawa ma sie inaczej w przypadku obiektow, new delete jest nieodzowne
Realloc natomiast nie powinno byc mieszane z new/delete.
a ja pomieszałem i nic strasznego się nie stało... ;p
// to zależy od wersji (i) kompilatora... Jesli chodzi ciesz sie, ale nie powinieneś mieszać (bo od tego głowa może rozboleć :-P ). [mf]
testowane na bcb 6.0, gcc i chyba vc++ 6.0 :-P
// to stestuj jeszcze na tc 1.0 :] [mf]
Zamiast realloc uzywaj new/delete wyjdzie ekonomiczniej.
Jezeli masz np. tablice powiekszyc to najlepiej jest utworzyc nowa (zasada mowi ze 2x wieksza) skopiowac dane ze starej, usunac stara i podmienic referencje. Dziala jak realloc.
Jezeli chcesz faktycznego realloca to pod win byla jakas funkcja do tego (ale nie powiem teraz jaka musisz w sdk poszukac), ale zwykle to sie wiaze i tak z reczna alokacja (jakbys uzyl realloc). Pod uniksami problemow nie ma. Mieszac mozna dosyc swobodnie.
Co do realloc to powiem tylko tyle ze pod niektorymi kompilatorami jest bląd ktory uniemozliwia zwiekszenie sterty powyzej 0xFFFF bajtow (djgpp) mimo iz powinno byc to mozliwe...