new delete operators c with examples
Poznaj wszystko o nowych / usuwaniu operatorów w C ++.
Widzieliśmy już zmienne i tablice statyczne w C ++ w naszych wcześniejszych tutorialach.
Jeśli chodzi o pamięć przydzieloną zmiennym i tablicom, to właśnie pamięć statyczna jest przydzielana przez kompilator w zależności od typu danych (w przypadku zmiennych) oraz wymiarów tablic.
Pamięć przydzielona przez kompilator jest przydzielana na stosie. Jednak w większości przypadków możemy nie być świadomi dokładnej ilości potrzebnej pamięci.
=> Przeczytaj popularne serie szkoleń C ++ tutaj.
To, co byśmy zrobili, to przydzielić i cofnąć alokację tyle pamięci, ile chcemy, a także kiedy i kiedy chcemy. Odbywa się to poprzez dynamiczne przydzielanie pamięci. W przeciwieństwie do alokacji statycznej, pamięć przydzielana dynamicznie jest przydzielana na stercie.
Dynamiczna alokacja pamięci jest przydatna, ponieważ możemy przydzielić pamięć o zmiennej wielkości, czego nie możemy osiągnąć za pomocą pamięci przydzielonej kompilatorowi. Możemy elastycznie przydzielać pamięć, kiedy jej potrzebujemy, i cofać ją, gdy jej nie potrzebujemy.
Ale poza tymi zastosowaniami musimy również pamiętać, że w przypadku dynamicznie przydzielanej pamięci to użytkownik jest odpowiedzialny za cofnięcie alokacji pamięci. Jeśli zapomnimy o cofnięciu alokacji pamięci, powoduje to wyciek pamięci, w którym pamięć nie jest zwalniana do czasu zakończenia programu.
Może to spowodować użycie zbyt dużej ilości pamięci i spowodować poważne wąskie gardła.
Czego się nauczysz:
- Dynamiczne przydzielanie pamięci
- „Nowy” operator
- Używanie „nowego” operatora z tablicami
- Operator usuwania
- Wniosek
- rekomendowane lektury
Dynamiczne przydzielanie pamięci
Język C wykorzystuje funkcje „malloc”, „calloc” i „realloc” do dynamicznego przydzielania pamięci. Aby zwolnić pamięć przydzieloną dynamicznie za pomocą tych funkcji, używa wywołania funkcji „free”. Język C ++ obsługuje również te funkcje z języka C w celu przydzielania / usuwania przydziału pamięci.
Oprócz tych funkcji, C ++ wprowadza dwa nowe operatory, które są bardziej wydajne w zarządzaniu pamięcią dynamiczną. Są to „nowy” operator do przydzielania pamięci i operator „delete” do usuwania alokacji pamięci.
W tym samouczku dowiemy się więcej o nowych i usuwaniu operatorów w języku C ++.
„Nowy” operator
Operator „new” przydziela pamięć zmiennej lub dowolnej innej jednostce na stercie.
Ogólna składnia operatora „nowy” jest następująca:
pointer_variable_of_data_type = new data type;
Wspomniany powyżej typ danych może być dowolnym poprawnym typem danych obsługiwanym przez C ++. Może to być wbudowany typ danych lub dowolny typ danych zdefiniowany przez użytkownika, w tym klasy i struktury.
Na przykład,
restful usługi internetowe pytania i odpowiedzi na wywiady dla doświadczonych
int *ptr = NULL; ptr = new int();
W powyższym przykładzie zadeklarowaliśmy zmienną wskaźnikową „ptr” na liczbę całkowitą i zainicjowaliśmy ją na null. Następnie za pomocą operatora „new” przydzielamy pamięć zmiennej „ptr”. Jeśli na stercie jest dostępna pamięć, druga instrukcja zakończy się powodzeniem. Jeśli nie ma dostępnej pamięci, nowy operator zgłasza wyjątek „std :: bad_alloc”.
Dlatego lepiej jest sprawdzić, czy pamięć została pomyślnie przydzielona przez nowego operatora przed użyciem tej zmiennej lub jednostki w programie.
Możemy również zainicjować zmienne za pomocą operatora new w następujący sposób:
ptr = new int(10);
W powyższym przykładzie zmienna wskaźnikowa „ptr” to pamięć zaalokowana przy użyciu operatora new i jednocześnie przypisana wartość 10. To kolejny sposób inicjalizacji w C ++.
Używanie „nowego” operatora z tablicami
Jeszcze innym zastosowaniem operatora „new” jest przydzielanie pamięci dla tablic. Tutaj określamy liczbę elementów, które mają być przydzielone dla tablicy.
Przykład alokacji elementów tablicy za pomocą operatora „new” jest podany poniżej:
int* myarray = NULL; myarray = new int(10);
Tutaj operator new przydziela 10 ciągłych elementów typu integer do zmiennej wskaźnika myarray i zwraca wskaźnik do pierwszego elementu myarray.
Operator usuwania
Pamięć przydzielana dynamicznie za pomocą nowego operatora musi zostać jawnie zwolniona przez programistę. W tym celu udostępniamy operator „usuń”.
Ogólna składnia operatora usuwania to:
delete pointer_variable;
Możemy więc zwolnić pamięć przydzieloną powyższej zmiennej ptr w następujący sposób:
delete ptr;
Ta instrukcja zwalnia pamięć przydzieloną zmiennej „ptr” z powrotem do puli pamięci.
Możemy również użyć operatora delete, aby zwolnić pamięć przydzieloną tablicom.
Na przykład,pamięć przydzieloną do tablicy myarray powyżej można zwolnić w następujący sposób:
delete() myarray;
Zwróć uwagę na operator indeksu dolnego używany z operatorem delete. Dzieje się tak, ponieważ ponieważ przydzieliliśmy tablicę elementów, musimy zwolnić wszystkie lokalizacje.
Zamiast tego, gdybyśmy użyli tego oświadczenia,
delete myarray;
Wiemy, że myarray wskazuje na pierwszy element tablicy, więc powyższa instrukcja usunie tylko pierwszy element tablicy. Użycie indeksu dolnego „()” wskazuje, że zmienna, której pamięć jest zwalniana, jest tablicą i cała przydzielona pamięć ma zostać zwolniona.
Poniższy przykład programowania pokazuje użycie operatorów new i delete w C ++.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Wynik:
najlepszy darmowy downloader muzyki mp3 dla Androida
pamięć przydzielona pomyślnie
* ptr = 10
* var = 12
wartości myarray: 1 2 3 4 5 6 7 8 9 10
Zrzut ekranu tego samego znajduje się poniżej.

W powyższym przykładzie kodu zademonstrowaliśmy użycie operatorów new i delete. Użyliśmy operatora „new” do przydzielenia pamięci dla zmiennej, tablic, a także do zainicjowania innej zmiennej wartością. Następnie usuwamy te jednostki za pomocą operatora delete.
Wniosek
Chodzi o nowe i usuń operatory C ++, jeśli chodzi o standardowe typy danych. Możemy również używać operatorów new i delete dla typów danych zdefiniowanych przez użytkownika jako klas i struktur.
Dowiemy się więcej o wykorzystaniu tych operatorów do tworzenia obiektów, gdy nauczymy się programowania obiektowego w C ++.
=> Zapoznaj się z przewodnikiem C ++ dla początkujących tutaj.
rekomendowane lektury
- Przykłady arytmetyki i operatorów logicznych w skrypcie powłoki Unix
- Aktualizuj MongoDB i usuń dokument z przykładami
- Operatory C ++, typy i przykłady
- Operatory Pythona
- Python DateTime Tutorial z przykładami
- Polecenie Cut w systemie Unix z przykładami
- Sortuj bąbelkowe w C ++ z przykładami
- Składnia poleceń Unix Cat, opcje z przykładami