mystery Opublikowano 15 Stycznia 2006 Zgłoś Opublikowano 15 Stycznia 2006 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
mystery Opublikowano 16 Stycznia 2006 Zgłoś Opublikowano 16 Stycznia 2006 (edytowane) nikt nie potrafi mi pomóc chlip :cry: Edytowane 16 Stycznia 2006 przez mystery Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
mystery Opublikowano 24 Stycznia 2006 Zgłoś Opublikowano 24 Stycznia 2006 skoro nikt nie umiał mi pomóc, to musiałem sobie poradzic samemu. z pomocą kumpla napisałem ten głupi projekt, jakby ktos kiedys potrzebował czegos podobnego to pisać, postaram sie zachować gdzies ten kod :) pozdrawiam mystery Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 24 Stycznia 2006 Zgłoś Opublikowano 24 Stycznia 2006 Wklej go poprostu tutaj i tyle. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...