Operatory new i delete
Lekcja 11 z 14 w kursie Wskaźniki w C++ w Coddy.
Ostatnią ważną rzeczą, której musisz się nauczyć o wskaźnikach, jest dynamiczna alokacja pamięci.
Dynamiczna alokacja pamięci pozwala przydzielać pamięć podczas działania programu. Oznacza to, że używając wskaźników, nie musisz deklarować i inicjalizować zmiennych przed uruchomieniem programu — możemy przydzielić miejsce w pamięci na coś, co zostanie użyte później.
Do tego używamy słowa kluczowego new.
int *ptr; // Deklarowanie wskaźnika
// Przydzielanie pamięci dla 1 int:
ptr = new int; // ptr wskazuje na tę pamięćUżywając new, rezerwujemy miejsce w pamięci na jedną liczbę całkowitą, którego możemy użyć później.
Aby uniknąć wycieków pamięci, które omówimy na następnej lekcji, każdą pamięć przydzieloną za pomocą new powinniśmy zwolnić przed zakończeniem programu, używając słowa kluczowego delete.
int *ptr;
ptr = new int;
*ptr = 10;
cout << "*ptr = " << *ptr << endl;
delete ptr; // Zwolnij przydzieloną pamięćJak widzisz, używając słowa kluczowego delete, później zwalniamy pamięć przydzieloną dla wskaźnika ptr, a to miejsce w pamięci jest teraz zwolnione i dostępne. Na następnej lekcji dowiesz się, jak ważna jest kontrola wycieków pamięci.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyDynamicznie przydziel pamięć dla trzech liczb całkowitych za pomocą wskaźników ptrA, ptrB i ptrC. Użyj trzech liczb całkowitych podanych jako argumenty funkcji i ustaw wartości pod adresami wskazywanymi przez wskaźniki tak, aby odpowiadały kolejno tym liczbom. Pierwszą liczbę przypisz do ptrA, drugą do ptrB, a ostatnią do ptrC, a na koniec wypisz wartości wszystkich wskaźników po dereferencji, oddzielając je spacją
Nie pisz funkcji <i>main()</i>
Spróbuj swoich sił
#include <iostream>
using namespace std;
void dynamicMemory(int a, int b, int c) {
// Wpisz tutaj swój kod
}
// NIE pisz funkcji main()Wszystkie lekcje w sekcji Wskaźniki w C++
2Wskaźniki i referencje
Wskaźniki jako parametryReferencje - &Referencje jako parametryWskaźniki a referencje3Dynamiczna alokacja pamięci
Operatory new i deleteWycieki pamięciTablica dynamicznaTablica dynamiczna — wstawianiePoćwicz samodzielnie: Kompilator C++ online