Java, Python, programowanie, ciekawostki programistyczne, algorytmy, Spring, Hibernate

wtorek, 9 lutego 2010

Ciąg dalszy o dynamicznej alokacj pamięci

W poprzedniej notce powiedzieliśmy sobie co nieco o funkcjach malloc, calloc oraz free. Jak poprzednio wspomniałem są to funkcje znane z języka C. Nie znaczy to oczywiście, że programiści C++ nie mogą ich używać. Z pewnych względów jednak nie powinni tego robić. Twórcy języka C++ oddają w nasze ręce nowe i lepsze rozwiązanie. Używanie funkcji new i delete ma szczególne znaczenie w przypadku programowania obiektowego, ale o tym jeszcze nie teraz. Zobaczmy jak za pomocą tych funkcji osiągnąć ten sam efekt co poprzednio:

int tablica*;
int rozmiar;
scanf("%d", &rozmiar);
tablica = new int[rozmiar];
...
delete[] tablica;

Jak widać zamiast dość skomplikowanego (przynajmniej na pierwszy rzut oka) wywołania malloc w dodatku z rzutowaniem, mamy tylko jedno słowo kluczowe new. Przy usuwaniu tak utworzonej tablicy trzeba jednak pamiętać aby użyć polecenia delete[] a nie samego delete, które to spowodowało by oddanie do systemu tylko pierwszego elementu (indeksu) tej tablicy. Nieużywanemu wskaźnikowi, podobnie jak w poprzednim przypadku, należy przypisać adres NULL.

Brak komentarzy:

Prześlij komentarz