Różnica między statyczną i dynamiczną alokacją pamięci

Spisu treści:

Różnica między statyczną i dynamiczną alokacją pamięci
Różnica między statyczną i dynamiczną alokacją pamięci

Wideo: Różnica między statyczną i dynamiczną alokacją pamięci

Wideo: Różnica między statyczną i dynamiczną alokacją pamięci
Wideo: Basics of Dynamic Memory Allocation 2024, Listopad
Anonim

Kluczowa różnica - alokacja pamięci statycznej i dynamicznej

W programowaniu konieczne jest przechowywanie danych obliczeniowych. Dane te są przechowywane w pamięci. Lokalizacje pamięci do przechowywania danych w programowaniu komputerowym są znane jako zmienne. Zmienne mają określony typ danych. Dlatego pamięć jest przydzielana do uruchamiania programów. Pamięć można alokować na dwa sposoby. Są to Statyczna alokacja pamięci i Dynamiczna alokacja pamięci. W statycznej alokacji pamięci po przydzieleniu pamięci nie można jej zmienić. Pamięć nie nadaje się do wielokrotnego użytku. Ale w dynamicznej alokacji pamięci po przydzieleniu pamięci można ją zmienić. Kluczowa różnica między statyczną a dynamiczną alokacją pamięci polega na tym, że w statycznej alokacji pamięci po przydzieleniu pamięci jej rozmiar jest stały, podczas gdy w dynamicznej alokacji pamięci po przydzieleniu pamięci jej rozmiar można zmienić.

Co to jest alokacja pamięci statycznej?

W statycznej alokacji pamięci przydzielona pamięć jest stała. Po przydzieleniu pamięci nie można jej zmienić. Pamięć nie może być zwiększona ani zmniejszona. Na przykład w języku C, jeśli programista pisze int x, co oznacza, że zmienna może przechowywać wartość całkowitą. Liczba bajtów zależy od komputera. Mogą być również tablice. Np. int x [5]; Ten x jest tablicą, która może przechowywać sekwencję danych tego samego typu. Może przechowywać pięć elementów całkowitych. Nie może przechowywać więcej niż pięć elementów. W Javie tablicę można utworzyć jako, int arr=new int[5]; Tablica „arr” może przechowywać 5 wartości całkowitych i nie może przechowywać więcej niż to.

Różnica między statyczną i dynamiczną alokacją pamięci
Różnica między statyczną i dynamiczną alokacją pamięci
Różnica między statyczną i dynamiczną alokacją pamięci
Różnica między statyczną i dynamiczną alokacją pamięci

Rysunek 01: Metody alokacji pamięci

W statycznej alokacji pamięci po przydzieleniu zmiennych pozostają one na stałe. Po początkowej alokacji programista nie może zmienić rozmiaru pamięci. Jeśli programista przydzielił tablicę, która może przechowywać 10 elementów, nie jest możliwe przechowywanie wartości większych niż określona ilość. Jeśli programista początkowo przydzielił tablicę, która może pomieścić 10 elementów, ale potrzebuje tylko 5 elementów, oznacza to marnowanie pamięci. Ta pamięć nie jest już potrzebna, ale nie jest również możliwe ponowne wykorzystanie pamięci. Statyczna alokacja pamięci jest stała, ale implementacja jest prosta i łatwa, a także szybka.

Co to jest dynamiczne przydzielanie pamięci?

Czasami konieczna jest zmiana rozmiaru pamięci. Tak więc pamięć może być przydzielana dynamicznie. W zależności od wstawiania i usuwania elementów danych pamięć może się powiększać lub zmniejszać. Jest to znane jako dynamiczna alokacja pamięci.

W języku C, pliku nagłówkowym stdlib.h, istnieją cztery funkcje dynamicznej alokacji pamięci. Są to calloc, malloc, realloc i wolne. Funkcja malloc() przydziela wymagany rozmiar bajtów i zwraca wskaźnik void wskazujący pierwszy bajt przydzielonej pamięci. Funkcja calloc() przydziela wymagany rozmiar bajtów i inicjalizuje je na zero. Następnie zwraca do pamięci wskaźnik void. Funkcja free() służy do ponownego przydzielania przydzielonej pamięci. A funkcja realloc może modyfikować wcześniej przydzieloną pamięć. Po przydzieleniu pamięci za pomocą funkcji calloc lub malloc rozmiar pamięci jest stały, ale można go zwiększyć lub zmniejszyć za pomocą funkcji realloc. W Javie kolekcje mogą być używane do dynamicznej alokacji pamięci.

Główną zaletą dynamicznej alokacji pamięci jest oszczędność pamięci. Programista może w razie potrzeby przydzielić lub zwolnić pamięć. Pamięć można ponownie przydzielić podczas wykonywania i zwolnić pamięć, gdy nie jest wymagana. Dynamiczna alokacja pamięci jest również wydajniejsza niż statyczna alokacja pamięci. Jedną z wad jest to, że implementacja dynamicznej alokacji pamięci jest złożona.

Jakie są podobieństwa między statyczną i dynamiczną alokacją pamięci?

  • Oba są mechanizmami alokacji pamięci.
  • Oba powinny być zaimplementowane ręcznie przez programistę.

Jaka jest różnica między statyczną a dynamiczną alokacją pamięci?

Statyczne a dynamiczne przydzielanie pamięci

Statyczna alokacja pamięci to metoda alokacji pamięci, a po przydzieleniu pamięci jest ona ustalana. Dynamiczna alokacja pamięci to metoda przydzielania pamięci, a po przydzieleniu pamięci można ją zmienić.
Modyfikacja
W statycznej alokacji pamięci nie można zmienić rozmiaru po początkowej alokacji. W dynamicznej alokacji pamięci można odpowiednio zminimalizować lub zmaksymalizować pamięć.
Wdrożenie
Alokacja pamięci statycznej jest łatwa do wdrożenia. Dynamiczna alokacja pamięci jest skomplikowana do wdrożenia.
Prędkość
W pamięci statycznej wykonywanie alokacji jest szybsze niż alokacja pamięci dynamicznej. W pamięci dynamicznej wykonywanie alokacji jest wolniejsze niż alokacja pamięci statycznej.
Wykorzystanie pamięci
W statycznej alokacji pamięci, nie można ponownie wykorzystać nieużywanej pamięci. Dynamiczna alokacja pamięci umożliwia jej ponowne wykorzystanie. W razie potrzeby programista może przydzielić więcej pamięci. W razie potrzeby może zwolnić pamięć.

Podsumowanie - alokacja pamięci statycznej i dynamicznej

W programowaniu statyczna alokacja pamięci i dynamiczna alokacja pamięci to dwa mechanizmy alokacji pamięci. Różnica między statyczną a dynamiczną alokacją pamięci polega na tym, że w statycznej alokacji pamięci po przydzieleniu pamięci jej rozmiar jest stały, podczas gdy w dynamicznej alokacji pamięci po przydzieleniu pamięci jej rozmiar można zmienić. Programista może zdecydować, czy pamięć ma być statyczna czy dynamiczna w zależności od aplikacji.

Pobierz plik PDF ze statyczną a dynamiczną alokacją pamięci

Możesz pobrać wersję PDF tego artykułu i używać jej do celów offline zgodnie z notatką cytowania. Proszę pobrać wersję PDF tutaj: Różnica między statyczną i dynamiczną alokacją pamięci

Zalecana: