C++/Zarządzanie pamięcią: Różnice pomiędzy wersjami
Nie podano opisu zmian |
(Brak różnic)
|
Wersja z 20:45, 8 mar 2006
W języku C++ do alokowania pamięci służy operator new a do zwalniania - delete. W C++ można również stosować funkcje malloc i free, jednak należy być ostrożnym. Najczęstszym błędem jest mieszanie operatorów new i delete z funkcjami malloc i free , np. zwalnianie pamięci zaalokowanej przez new przy pomocy free.
Rozważmy prosty przykład. Załóżmy, że chcemy stworzyć wektor 10 liczb typu całkowitego. Możemy to zrobić na dwa sposoby.W stylu znanym z języka C:
int *Wektor = (int*)malloc(sizeof(int)*10); free(Wektor);
albo w stylu C++:
int *Wektor = new int[10]; delete Wektor;
Od razu widać, że drugi zapis jest zdecydowanie łatwiejszy i przyjemniejszy w użyciu. To jest podstawowa zaleta operatora new - krótszy zapis. Wystarczy wiedzieć jakiego typu ma być obiekt, który chcemy powołać do życia, nie martwiąc się o rozmiar alokowanego bloku pamięci. Drugą zaletą jest fakt, że przy okazji alokacji pamięci możemy wywołać odpowiedni konstruktor inicjalizując wartości zmiennych obiektu, np.
Test *Test = new Test(1,2);
zakładając, że obiekt Test posiada dwie zmienne typu całkowitego i zdefiniowany konstruktor Test(int,int).
Kolejną korzyścią jest możliwość przeciążania. Jednak to już jest temat na inny rozdział.