Skocz do zawartości
mystery

Stl

Rekomendowane odpowiedzi

witam

mam do napisania projekt, który będzie symulował działanie alokatora pamięci (czyli ma działać podobnie do operatorów new i delete). nie bardzo wiem jak sie za to zabrać, polecenie jest takie

Alokator pamięci to usługa udostępniana przez system operacyjny lub środowisko systemowe, pozwalająca na dynamiczny przydział i zwalnianie bloków danych zadanego rozmiaru w obszarze roboczym pamięci operacyjnej. W szczególności, alokator jest wykorzystywany do realizacji takich operacji, jak new i delete w języku C++.

 

Przy realizacji zadania projektowego należy przyjąć następujące założenia upraszczające:

zarządzany obszar pamięci roboczej złożony jest z s komórek pamięci rozmiaru 1 bajta każda, adresowanych kolejno wartościami od 0 do s-1,

w miarę postępu alokacji w obszarze pamięci wyróżnia się bloki wolnej pamięci, rozumiane jako najdłuższe możliwe ciągi niezaalokowanych komórek pamięci o sąsiadujących ze sobą adresach,

początkowo cały obszar pamięci roboczej stanowi blok wolnej pamięci,

żądanie alokacji bloku danych o rozmiarze b jest realizowane wtedy i tylko wtedy, gdy istnieje w pamięci wolny blok rozmiaru przynajmniej b,

w przypadku, gdy alokacja następuje metodą first-fit, do realizacji żądania wykorzystywanych jest b kolejnych komórek wolnej pamięci, poczynając od komórki o możliwie jak najmniejszym adresie,

w przypadku, gdy alokacja następuje metodą best-fit, do realizacji żądania wykorzystywanych jest b kolejnych komórek wolnej pamięci należących do bloku wolnej pamięci o możliwie jak najmniejszym rozmiarze, poczynając od komórki o możliwie jak najmniejszym adresie.

wynikiem alokacji jest adres pierwszej komórki zaalokowanego bloku, lub wartość null, gdy alokacja się nie powiedzie,

polecenie zwolnienia bloku pamięci przyjmuje jako parametr zmienną wskazującą na adres początkowy zaalokowanego bloku, powodując jego zwolnienie (jeśli adres jest poprawny) lub brak akcji (jeśli adres nie jest poprawny); w obydwu przypadkach wartość zmiennej wskaźnikowej jest ustawiana następnie na null.

 

Wejście

 

Pierwszy wiersz wejścia zawiera dwie liczby całkowite s c, określające odpowiednio liczbę bajtów zarządzanej pamięci i liczbę poleceń wykonywanych przez alokator w trakcie symulacji. W następnych c liniach znajduje się ciąg poleceń wydawanych alokatorowi. Każde polecenie przyjmuje jedną z czterech postaci:

ff PTR b - polecenie alokacji bloku b bajtów metodą first-fit i zapamiętanie wyniku jako wartości zmiennej wskaźnikowej o nazwie PTR,

bf PTR b - polecenie alokacji bloku b bajtów metodą best-fit i zapamiętanie wyniku jako wartości zmiennej wskaźnikowej o nazwie PTR,

pr PTR - polecenie wypisania na standardowe wyjście jednej linii znakowej, zawierającej wartość adresu zapisanego w zmiennej wskaźnikowej o nazwie PTR,

dl PTR - polecenie zwolnienia bloku pamięci począwszy od adresu wskazywanego przez zmiennę wskaźnikową o nazwie PTR.

 

Nazwy PTR zmiennych wskaźnikowych mogą być dowolnymi ciągami dużych liter alfabetu łacińskiego (A..Z).

 

Wyjście

 

Program powinien wypisać na standardowe wyjście w oddzielnych liniach wyniki wykonania kolejnych operacji pr, tj. liczbę całkowitą lub ciąg znaków null określający adres wskazywany przez zmienną.

Przykład Wejście:16 22bf A 1pr Abf B 2pr Bbf C 4pr Cbf D 1pr Dbf E 1pr Ebf F 1pr Fbf G 1pr Gbf H 3pr Hdl Adl Cdl Fdl Gbf I 2pr IWyjście:01378910119

nie wiem zabardzo jak sie za to zabrać. nauczyciel doradza użycie biblioteki STL i funkcji map, set oraz pair. szukam polskich tutków, ale jakoś nie moge znaleźć nic konkretnego.

NIE chodzi mi oto, aby ktoś mi napisał ten prograł, ale o wytłumaczenie na czym polega programowanie z użyciem STL (jakieś linki, cokolwiek) i ogólnie zasade z jaką ma działać ten program, bo póki co to nic z tego nie rozumiem. wiem, wiem zielony jestem, ale dlatego zwracam sie o pomoc. program muszę pisać w DevC++.

za wszelką pomoc z góry dziękuję

pozdrawiam

mystery

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...