Witam z powrotem. To będzie nasze ostatnie zadanie, nasze ostatnie wyzwanie
dla naszej sekcji wskaźników.
W tym wyzwaniu chcę, abyś zrozumiał, jak
działa dynamiczna alokacja pamięci. Więc będziesz musiał zacisnąć sznurek.
To będzie dość proste.
Ale dzięki temu zrozumiesz
całą koncepcję dynamicznej alokacji pamięci.
Jakie są zalety dynamicznej alokacji pamięci?
Cóż, oznacza to, że możesz przydzielić wystarczającą ilość pamięci, kiedy jej potrzebujesz.
Nie musisz marnować pamięci. A jeśli potrzebujesz więcej pamięci, możesz ją ponownie przydzielić.
To zadanie sprawi, że użyjesz malloc.
W tym wyzwaniu napiszesz program, który sprawdzi twoje zrozumienie dynamicznej alokacji pamięci.
Chcę, abyś napisał program, który pozwoli użytkownikowi wprowadzić ciąg tekstowy.
Więc będziesz musiał użyć scanf. Możesz także użyć git s, nie
rozmawialiśmy o tym zbyt wiele, ale git s lub f git s
na standardowym strumieniu wejściowym pozwolą ci na
odczytanie ciągu zawierającego spacje. Pamiętaj, scanf
odczyta łańcuch tylko do spacji.
Jeśli używasz git s, możesz czytać wiele ciągów oddzielonych spacjami, ale tak czy inaczej jest
w porządku, scanf lub git s w obu przypadkach.
Musisz poprosić użytkownika o wprowadzenie ciągu. Program wydrukuje wprowadzony
tekst.
Może się to wydawać bardzo proste, ale różnica polega na tym, że program będzie
wykorzystywał dynamiczną alokację pamięci.
Możesz również poprosić użytkownika o wprowadzenie limitu ciągu, który
wprowadza, a następnie możesz użyć tego dla malloc, aby wiedzieć, ile bajtów ma przydzielić.
Powinieneś utworzyć wskaźnik typu char, tylko wskaźnik znakowy, bez tablic znaków.
Chcę, żebyś przydzielił pamięć. Pamiętaj, że podczas tworzenia
tablicy znaków pamięć jest już automatycznie przydzielana
na podstawie
rozmiaru umieszczonego w nawiasach. I znowu, wielką wadą jest to, że
teraz, jeśli spróbujesz wprowadzić coś większego niż to, co umieściłeś w rozmiarze, musisz ponownie skompilować.
To jest statyczne. Ta pamięć jest przydzielana w czasie kompilacji.
Pamięć dynamiczna jest przydzielana podczas uruchamiania programu.
Dzięki temu możesz określić, ile pamięci chcesz przydzielić na podstawie tego, co wprowadzi użytkownik.
Dlatego ponownie poproś użytkownika o wpisanie liczby bajtów,
które chcesz przydzielić dla ciągu.
Następnie poproś użytkownika o wprowadzenie ciągu.
I musisz poprawnie przydzielić pamięć, a następnie przekazać ten wskaźnik znakowy do scanf
lub git
s, a następnie po prostu wyświetlić wprowadzony tekst.
I wreszcie, nie zapomnij o wszystkich ważnych darmowych funkcjach.
Zawsze chcesz zwolnić pamięć, gdy skończysz jej używać,
i chcesz się upewnić, że robisz to, aby inne programy
mogły ją wykorzystać. Pamięć jest rzadkim
zasobem, zwłaszcza w programach czasu rzeczywistego w systemach wbudowanych, więc
nie zapominaj o niej, tylko ją zwalniaj.
Powodzenia, na następnym wykładzie przedstawię rozwiązanie. Dziękuję Ci.