Tworzenie zwykłej tablicy 2D
Poniższe stwierdzenie tworzy zwykłą tablicę 2D:
String arr2d [] [5] = „aa”, „ab”, „ac”, „ad”, „ae”,Jeśli ta tablica jest tworzona w globalnym zakresie, nie można jej użyć (e.G. ponownie przypisał wartość elementu) w globalnym zakresie. Może jednak mieć dowolny z jego elementów, cofnie wartość w innych rozszczepieniach.
Aby usunąć tę tablicę, po prostu pozwól jej wyjść z zakresu. Gdyby został utworzony w zakresie innego niż globalny zakres, ulegałby temu na końcu bloku (). Gdyby został stworzony w globalnym zakresie, zniknąłby to tylko z zakresu na koniec programu.
Darmowa tablica sklepu 2d
Poniższe stwierdzenie pokazuje, w jaki sposób powyższa tablica, ale z inną nazwą wskaźnika można utworzyć dynamicznie w bezpłatnym sklepie:
String (*ptr2d) [5] = nowy String [5] [5] „AA”, „AB”, „AC”, „AD”, „AE”,Zwróć uwagę, jak utworzono tablicę 2D z nowym operatorem. Nazwa tablicy to ptr2d.
Jeśli ta tablica jest tworzona w globalnym zakresie, nie można jej użyć (e.G. ponownie przypisał wartość elementu) w globalnym zakresie. Może jednak mieć dowolny z jego elementów, cofnąć wartość w innych rozszczepieniach.
Aby usunąć tę tablicę, użyj operatora Delete [], jak pokazano poniżej. Tablicy w bezpłatnym sklepie nie można tak naprawdę usunąć, pozwalając, by zejść z zakresu. Należy go usunąć za pomocą operatora Delete [] w zakresie, aby uwolnić pamięć.
Treść artykułu
- Wprowadzenie - patrz wyżej
- Usuwanie zwykłej tablicy 2D
- Usuwanie dynamicznie utworzonych 2D wskaźników bezpłatnego sklepu
- Wniosek
Usuwanie zwykłej tablicy 2D
Dwuwymiarowa zwykła tablica zostaje usunięta, pozwalając jej zejść z zakresu. Poniższy program ilustruje to zagnieżdżonym zakresem:
#włączaćWyjście to BB. Konstrukt IF ma blok, który jest zagnieżdżonym zakresem. Tablica przestaje istnieć na końcu bloku. W programie jest wskaźnik komentarza, tuż poniżej bloku. Jeśli zostanie usunięty, program nie zostanie skompilowany i zostanie wydany komunikat o błędzie. Wynika to z faktu, że tablica 2D jest martwa na końcu bloku.
W poniższym programie zwykła tablica 2D zadeklarowana w ciele funkcyjnym umiera na końcu bloku funkcyjnego:
#włączaćWyjście jest nadal, BB. W programie znajduje się wskaźnik komentarza w programie funkcyjnym. Jeśli zostanie usunięty, program nie zostanie skompilowany i zostanie wydany komunikat o błędzie. Wynika to z faktu, że tablica 2D jest martwa na końcu bloku. Przypomnijmy również, że przypisanie wartości do elementu 2D po deklaracji nie jest dozwolone w globalnym zakresie.
Usuwanie dynamicznie utworzonych 2D wskaźników bezpłatnego sklepu
Przydział po deklaracji jest niedozwolony w globalnym zakresie. Dlatego wygodne jest posiadanie deklaracji tablicy 2D, w zagnieżdżonym zakresie, w głównej funkcji C ++, z powodów pedagogicznych.
Dwuwymiarowa tablica, zadeklarowana w powyższym formularzu, jest usuwana z składnią „Usuń [] 2darray”. To usunięcie musi odbyć się w swoim zakresie, aby uwolnić pamięć i uniknąć wycieku pamięci. Poniższy program ilustruje to z zagnieżdżonym zakresem:
#włączaćWyjście to, AA, z ptr2d [0] [0]. Po usunięciu ptr2d [0] [0] nic nie zwraca. Chociaż inne elementy, takie jak ptr2d [1] [1], nadal zwróciłyby wartość, tablica jest uważana za usunięta.
2d darmowa tablica sklepu jako wskaźnik do wskaźnika
Tablicę 2D może być utworzona jako wskaźnik do wskaźnika. W takim przypadku wszystkie wiersze będą musiały zostać najpierw usunięte, zanim pozostała jednowymiarowa tablica, zostanie usunięta. Poniższy program ilustruje to w głównej funkcji C ++:
#włączaćWyjście to BB przed usunięciem. Po usunięciu wartość zwracana z ptr2d [1] [1] jest niczym.
Teraz ta tablica wskaźnika 2D w bezpłatnym sklepie jest wskaźnikiem jednowymiarowej tablicy, tablic wskaźników. Tak więc, aby usunąć tablicę 2D w bezpłatnym sklepie, wszystkie wiersze muszą zostać najpierw usunięte z Delete [], zanim zostanie usunięta główna jednowymiarowa tablica wskaźnika. To wykorzystuje schemat operatora Delete [] dla tablicy 2D w bezpłatnym sklepie.
Włączenie biblioteki
Nowy i operator usuwania, są faktycznie zdefiniowane w bibliotece. Jednak włączenie tej biblioteki jest opcjonalne.
Wniosek
Aby usunąć zwykłą tablicę 2D, po prostu pozwól jej wyjść z zakresu. Jeśli tablica 2D jest w bezpłatnym sklepie, należy ją usunąć za pomocą operatora Delete [], aby uwolnić pamięć w zakresie, w którym jest zadeklarowana. Jeśli tablica 2D w bezpłatnym sklepie została utworzona z konwencjonalną składnią, to prosta „Usuń [] 2darrayName” zrobiłaby dla usunięcia. Jeśli został utworzony jako wskaźnik wskaźnika do punktu, wiersze będą musiały zostać najpierw usunięte za pomocą „Delete [] 2darrayName [i]”, a następnie pozostałej tablicy 1D (bez elementów), zostaną usunięte za pomocą „Delete [] 2darrayName ”.