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.
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
1Podstawy wskaźników
Czym jest wskaźnik?Deklarowanie wskaźnikówOperator pobrania adresu (&)Operator dereferencji (*)Wskaźniki NULLPodsumowanie: podstawy wskaźników4Projekt: Proste narzędzie tekstowe
Przegląd projektuLiczenie znaków2Wskaźniki i tablice
Nazwy tablic jako wskaźnikiElementy tablic — wskaźnikiArytmetyka wskaźnikówPorównywanie wskaźnikówPodsumowanie: przechodzenie po tablicy za pomocą wskaźników5Wskaźniki i funkcje
Przekazywanie przez wartośćPrzekazywanie wskaźników do funkcjiModyfikowanie zmiennych za pomocą wskaźnikówKlasyczny przykład: zamianaPrzekazywanie tablic do funkcjiPowtórka: argumenty wskaźnikowe funkcji8Struktury i wskaźniki
Wskaźniki do strukturOperator strzałki (->)Przekazywanie struktur przez wartośćPrzekazywanie wskaźników do strukturDynamiczna alokacja strukturPodsumowanie: modyfikowanie struktury — wskaźnik11Końcowe zadania powtórkowe
Powtórka: dynamiczne łączenie ciągów znakówPowtórka: tablica strukturPowtórka: licznik częstotliwości słów3Tablice znaków i ciągi znaków
Ciągi znaków jako tablice charZnak końca ciąguWczytywanie ciągu za pomocą scanfUżywanie strlen()Używanie strcpy()Używanie strcat()Używanie strcmp()Podsumowanie: podstawowe funkcje do obsługi ciągów znakówPoćwicz samodzielnie: Kompilator C online