• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Bufor, Stos jak dokładnie działa

Object Storage Arubacloud
0 głosów
328 wizyt
pytanie zadane 6 kwietnia 2022 w C i C++ przez trampek Nowicjusz (120 p.)
Dzień dobry,

Chciałbym zapytać :

1. Co to dokładnie jest stos oraz bufor ( prostymi słowami) ?

2. Czy to co już wiem jest poprawne?

W pamięci RAM są miejsca na:

- tekst programu.

- zmienne globalne.

- sterta ( miejsce na zmienne dynamiczne)

- stos ( miejsce na zmienne lokalne)

Na stosie przechowywane są zmienne lokalne w taki sposób, że np. jeżeli w funkcji main napisze:

1 linijka kodu ---- char imie[10] ;

2 linijka kodu ........scanf("%s",imie);     

(STOS) to najpierw na stosie tworzy się np. 10 zielonych książek potem na tych książkach na samym wierzchu leży informacja ( wskaznik na adres ) drugiej linijki kodu w funkcji main. ( żeby procesor wiedział gdzie ma wrócić do kodu) i jeżeli chcemy dostać się do książki która jest w środku to sciagamy 4 książki wyciągamy 5 i odkładamy na miejscie pozostałe książki.

BUFOR - I teraz czy bufor też jest umieszczony na stosie tzn. wyobrażam to sobie tak, że jeżeli STOS to jest duży pokój w którym są 2 duże stoliki i na pierwszym stoliku mamy te 10 zielonych książek to na drugim stoliku mamy bufor czyli np. wyobrażam go sobie jako kartonowe pudło i teraz jeżeli w drugiej linijce kodu wpisuje imie na komputerze np. Bartek to te 6 znaków trafia do bufora w formie tablicy i jeżeli klikne enter to wtedy z bufora trafia to do 6 zielonych książek ( w każdej książce jedna litera ) i tak samo jeżeli np. w 3 linijce kodu miałbym napisane printf("%s",imie); to każda litera z tych książek trafia najpierw do kartonu a dopiero później na monitor

 

Wiem, że jest to napisane bardzo prostym językiem ale zależało mi na napisaniu jak sobie to wyobrażam w głowie.

Bardzo proszę o odpowiedzi.
komentarz 6 kwietnia 2022 przez overcq Pasjonat (21,710 p.)

Odniosę się tylko do punktu 2.

Nazwą stos można określić albo ogólnie strukturę danych, albo szczególnie w programie maszynowym. Przypuszczam, że używasz tego drugiego znaczenia.

Program nie wykonuje się na stosie, ale ma stos do dyspozycji, więc procesor przechowuje sobie adres następnej instrukcji do pamięci kodu maszynowego programu (przechowuje w ukrytym rejestrze). Stos jest odrębnym obszarem pamięci niż kod maszynowy programu. Jest też rejestr wskazujący na wierzchołek stosu i deklaracja zmiennej na stosie obniża ten wskaźnik (stos powiększa się w dół).

Do uzyskania dostępu do pamięci na stosie nie potrzeba zdejmować zmiennych ze stosu, wystarczy podać adres: wierzchołek stosu plus liczba. Natomiast stos jest używany przez procesor do odczytania, gdzie wrócić przy powrocie z funkcji. Dlatego mówi się o tzw. ramkach stosu przynależnych do funkcji. Ponieważ taki obszar stosu musi zostać zwolniony (wskaźnik stosu przesunięty w górę) do adresu powrotu z funkcji przy returnie.

Bufor rezyduje w wybranej pamięci, na przykład na stosie (czego nie polecam). Więc jeśli wpiszesz imię, to po wykonaniu się scanf trafia ono bezpośrednio do bufora czyli tutaj pamięci na stosie. Bufor oznacza pamięć, gdzie są przechowywane dane przekazywane pomiędzy czymś a czymś. Wikipedia to dobrze wyjaśnia, choć krótko.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 185 wizyt
pytanie zadane 27 września 2022 w C i C++ przez RufinB Obywatel (1,830 p.)
0 głosów
1 odpowiedź 106 wizyt
pytanie zadane 10 września 2022 w C i C++ przez RufinB Obywatel (1,830 p.)
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 18 września 2021 w C i C++ przez Dron Początkujący (280 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...