Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zrozumienie treści polecenia

karol_plocha 17 Gru 2010 18:47 888 6
  • #1 17 Gru 2010 18:47
    karol_plocha
    Poziom 14  

    Czy ktoś mógłby, mi po ludzku przetłumaczyć co ta klasa ma tu robić. I o co chodzi z programem ilustrującym?

    "Stworzyć klasę szablonową służącą do przydzielania i obsługi obszarów pamięci. Klasa powinna pozwalać na przydzielenie obszaru o zadanej liczbie obecnie używanych elementów oraz zwolnienie pamięci używanej przez ten obszar w przypadku gdy nie będzie już do niego odwołań. Napisać program ilustrujący działanie klasy."

    0 6
  • #2 17 Gru 2010 19:42
    drzasiek
    Specjalista - Mikrokontrolery

    Masz daną ilość pamięci i powinieneś mieć sekwencje odwołań. Wiesz w jakiej strategii przydziału pamięci masz to zrobić?

    0
  • #3 18 Gru 2010 01:03
    directx11
    Poziom 17  

    Na mój rozum to wygląda tak: Klasa szablonowa, typ szablonu to mają być obiekty, którym będzie przydzielać zadaną pamięć, Ty podajesz tylko ilość obiektów, na jaką przydzielić, klasa na podstawie rozmiaru typu szablonu wylicza ile pamięci jest potrzebne i rezerwuje dany obszar, jednocześnie zarządzając nim. Jeśli wszystkie obiekty z danego obszaru zostaną zwolnione to jest zwalniany. Tak bym to widział.

    0
  • #4 18 Gru 2010 01:30
    karol_plocha
    Poziom 14  

    Dzieki. Rozjasnilo mi sie z ta klasa, wlasciwie to z szablonem klas. Ale zastanawiam sie na czym ma polegac ta ilustracja. Po prostu wypisywanie komunikatow, czy jak?

    0
  • #5 18 Gru 2010 15:41
    arnoldziq
    Moderator Programowanie

    Ilustracja ma polegać na tym, że pokażesz, że twoja klasa alokuje i zwalnia pamięć. Musisz, po prostu, tę klasę użyć w swojej aplikacji.

    0
  • #6 20 Gru 2010 17:47
    karol_plocha
    Poziom 14  

    Myślę powoli nad tym projektem, ale przychodzi mi coraz więcej pytań do głowy.

    directx11 napisał:
    typ szablonu to mają być obiekty
    Obiekty, tzn klasy?

    directx11 napisał:
    klasa na podstawie rozmiaru typu szablonu wylicza ile pamięci jest potrzebne i rezerwuje dany obszar, jednocześnie zarządzając nim.
    Zarządzając to znaczy co? Czy do rezerwacji trzeba użyć funkcji 'new'?

    directx11 napisał:
    Jeśli wszystkie obiekty z danego obszaru zostaną zwolnione to jest zwalniany.
    Rozumiem, że po prostu, gdy usunę wszystkie obiekty to już obszar jest zwalniany, czy trzeba użyć jeszcze jakiejś specjalnej funkcji?

    0
  • #7 20 Gru 2010 20:59
    directx11
    Poziom 17  

    karol_plocha napisał:
    directx11 napisał:
    typ szablonu to mają być obiekty
    Obiekty, tzn klasy?


    Tak jak się robi standardowo klasy szablonowe:

    Code:
    template<class T>
    
    class A
    {
      T    typ;
    };

    A<int> odpowiada:

    class A
    {
      int    typ;
    };


    karol_plocha napisał:
    directx11 napisał:
    klasa na podstawie rozmiaru typu szablonu wylicza ile pamięci jest potrzebne i rezerwuje dany obszar, jednocześnie zarządzając nim.
    Zarządzając to znaczy co? Czy do rezerwacji trzeba użyć funkcji 'new'?


    Wydaje mi się, że to będzie coś w stylu starej sztuczki programistów gier. Jak wiadomo przydzielanie pamięci nie jest za szybkie a programiści aby było szybko radzili sobie tak: tworzyli własny manager pamięci, rezerwowali bardzo duże, niezajęte i ciągłe bloki pamięci i za pomocą takiego managera operowali na nim - mieli takie swoje własne operatory new(), delete() i tym podobne. Mając całkowitą kontrolę nad pamięcią mogli ją szybko defragmentować, przydzielać, zwalniać, przesuwać - jak im było wygodnie. Ty zapewne masz stworzyć coś takiego dla poszczególnych typów, które są argumentami szablonu.

    karol_plocha napisał:
    directx11 napisał:
    Jeśli wszystkie obiekty z danego obszaru zostaną zwolnione to jest zwalniany.
    Rozumiem, że po prostu, gdy usunę wszystkie obiekty to już obszar jest zwalniany, czy trzeba użyć jeszcze jakiejś specjalnej funkcji?
    .

    Gdy twój "manager" stwierdzi, że zwolnił wszystkie obiekty, nad którymi miał kontrolę to po prostu zwalnia swój zajęty, ciągły obszar pamięci. Tak bym to przynajmniej generalnie widział.

    0