Menu
Coddy logo textTech

Pamięć stosu a sterty

Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 31 z 63.

Podczas działania programu w języku C używane są dwa odrębne obszary pamięci: stos i sterta. Zrozumienie różnicy między tymi obszarami pamięci ma kluczowe znaczenie dla efektywnego programowania w języku C, zwłaszcza podczas pracy ze wskaźnikami i dynamicznym przydzielaniem pamięci.

Stos służy do statycznej alokacji pamięci. To tutaj przechowywane są zmienne lokalne, parametry funkcji i informacje o wywołaniach funkcji. Stos jest zarządzany automatycznie przez system — gdy deklarujesz zmienną lokalną, pamięć jest przydzielana na stosie, a gdy zmienna przestaje być widoczna w swoim zakresie, ta pamięć jest automatycznie zwalniana.

void function() {
    int x = 10;  // Przydzielone na stosie
    char arr[100];  // Również przydzielone na stosie
    // Pamięć jest automatycznie zwalniana po zakończeniu funkcji
}

Sterta służy do dynamicznego przydzielania pamięci. Jest to większy obszar pamięci, o który możesz poprosić podczas wykonywania programu.

W przeciwieństwie do stosu sterta wymaga ręcznego zarządzania — musisz jawnie zażądać pamięci, a później ją zwolnić, gdy skończysz z niej korzystać. Daje ci to większą kontrolę, ale także większą odpowiedzialność.

Kluczowa różnica dotyczy zarządzania: pamięć stosu jest zarządzana automatycznie i ma ograniczony rozmiar, natomiast pamięć sterty jest zarządzana ręcznie i jest znacznie większa. W kolejnych lekcjach dowiesz się, jak pracować z pamięcią sterty za pomocą funkcji takich jak malloc() i free().

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

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 sterowanie przepływem

Poćwicz samodzielnie: Kompilator C online