Menu
Coddy logo textTech

Dynamiczne zarządzanie pamięcią za pomocą „new”

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 6 z 56.

Do tej pory pracowałeś z wskaźnikami, które wskazują na zmienne utworzone już w programie. Ale co, jeśli musisz tworzyć zmienne podczas działania programu? Właśnie wtedy niezbędna staje się dynamiczna alokacja pamięci za pomocą słowa kluczowego new.

Słowo kluczowe new pozwala przydzielić pamięć dla zmiennej na stercie podczas wykonywania programu. W przeciwieństwie do zwykłych zmiennych tworzonych na stosie, pamięć przydzielona dynamicznie istnieje do momentu, gdy jawnie ją zwolnisz.

int* ptr = new int;  // Przydziela pamięć na liczbę całkowitą
*ptr = 42;           // Przypisuje wartość do przydzielonej pamięci

W tym przykładzie new int przydziela wystarczającą ilość pamięci do przechowywania liczby całkowitej i zwraca wskaźnik do tej lokalizacji pamięci. Następnie możesz użyć operatora dereferencji, aby przypisywać wartości i uzyskiwać dostęp do dynamicznie przydzielonej zmiennej, tak jak do każdej innej zmiennej wskazywanej przez wskaźnik.

Dynamiczne przydzielanie pamięci jest szczególnie przydatne, gdy nie wiesz, ile pamięci będzie potrzebne w czasie działania programu, lub gdy potrzebujesz, aby zmienne istniały poza zakresem, w którym zostały utworzone. Ta elastyczność sprawia, że new jest potężnym narzędziem do tworzenia bardziej złożonych programów.

challenge icon

Wyzwanie

Łatwy

Utwórz program demonstrujący dynamiczną alokację pamięci za pomocą słowa kluczowego new, aby przydzielić pamięć dla zmiennej podczas wykonywania programu.

Podane zostanie następujące wejście:

  • Wartość całkowita do zapisania w dynamicznie przydzielonej pamięci

Twój program powinien:

  1. Użyć słowa kluczowego new, aby dynamicznie przydzielić pamięć dla liczby całkowitej
  2. Zapisać wskaźnik zwrócony przez new w zmiennej wskaźnikowej o nazwie numPtr
  3. Użyć operatora dereferencji, aby przypisać wartość wejściową do dynamicznie przydzielonej pamięci
  4. Wypisać wartość zapisaną w dynamicznie przydzielonej pamięci, dereferencjonując wskaźnik
  5. Wypisać adres pamięci zapisany we wskaźniku

Użyj następującego dokładnego formatu wyjściowego:

Value: [value]
Address: [memory address]

Adres pamięci zostanie wyświetlony w formacie szesnastkowym, w którym C++ pokazuje adresy pamięci dla pamięci przydzielonej dynamicznie.

Spróbuj swoich sił

#include <iostream>
using namespace std;

int main() {
    // Wczytaj dane wejściowe
    int value;
    cin >> value;
    
    // TODO: Napisz swój kod poniżej
    // Użyj 'new', aby dynamicznie przydzielić pamięć na liczbę całkowitą
    // Zapisz wskaźnik w zmiennej o nazwie 'numPtr'
    // Przypisz wartość wejściową do dynamicznie przydzielonej pamięci
    
    // Wyświetl wynik
    cout << "Value: " << /* wyłuskaj wartość wskazywaną przez numPtr tutaj */ << endl;
    cout << "Address: " << /* wyświetl adres przechowywany w numPtr */ << endl;
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator C++ online