eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Memory pool
Ilość wypowiedzi w tym wątku: 4

  • 1. Data: 2009-01-05 10:53:42
    Temat: Memory pool
    Od: Maciej Piechotka <u...@g...com>

    Czy ktoś zna dobry opis tworzenia memory pool? Chodzi mi o strukturę
    która może:
    - Zaalokować blok o znanej wielkości (w czasie kompilacji)
    - Zwolnić wcześniej zaalokowany blok
    - 'Poprosić' o więcej miejsca (w określonych jednostkach [stronach])

    Czy ktoś zna dobry opis? Próbowałem szukać w google ale najczęściej są
    tam opisy jak to działa od strony użytkownika.

    Pozdrawiam
    --
    I've probably left my head... somewhere. Please wait untill I find it.
    Homepage (pl_PL): http://uzytkownik.jogger.pl/
    (GNU/)Linux User: #425935 (see http://counter.li.org/)


  • 2. Data: 2009-01-05 21:21:59
    Temat: Re: Memory pool
    Od: Michał 'Khorne' Rzechonek <k...@g...com>

    On 5 Sty, 11:53, Maciej Piechotka <u...@g...com> wrote:
    > Czy ktoś zna dobry opis tworzenia memory pool? Chodzi mi o strukturę
    > która może:
    > - Zaalokować blok o znanej wielkości (w czasie kompilacji)
    > - Zwolnić wcześniej zaalokowany blok
    > - 'Poprosić' o więcej miejsca (w określonych jednostkach [stronach])

    Jak chcesz alokować cokolwiek w czasie kompilacji?

    Chodzi ci o alokator? Algorytmów jest od groma. Jednym z
    fajniejszych jest http://rtportal.upv.es/rtmalloc nawet masz gotowa
    implementacje.

    Alokatory bloków o stałej wielkości robi się prościej, ładny C++owy
    przykład jest u Alexandrescu, implementacja np.
    http://loki-lib.sourceforge.net/html/a00133.html

    pozdr
    Khorne


  • 3. Data: 2009-01-06 00:45:44
    Temat: Re: Memory pool
    Od: Maciej Piechotka <u...@g...com>

    Michał 'Khorne' Rzechonek <k...@g...com> writes:

    > On 5 Sty, 11:53, Maciej Piechotka <u...@g...com> wrote:
    >> Czy ktoś zna dobry opis tworzenia memory pool? Chodzi mi o strukturę
    >> która może:
    >> - Zaalokować blok o znanej wielkości (w czasie kompilacji)
    >> - Zwolnić wcześniej zaalokowany blok
    >> - 'Poprosić' o więcej miejsca (w określonych jednostkach [stronach])
    >
    > Jak chcesz alokować cokolwiek w czasie kompilacji?
    >

    typ nazwa_zmiennej; w składni C ;)

    A poważnie - chodzi o znaną z góry wielkość oczywiście.

    > Chodzi ci o alokator? Algorytmów jest od groma. Jednym z
    > fajniejszych jest http://rtportal.upv.es/rtmalloc nawet masz gotowa
    > implementacje.
    >
    > Alokatory bloków o stałej wielkości robi się prościej, ładny C++owy
    > przykład jest u Alexandrescu, implementacja np.
    > http://loki-lib.sourceforge.net/html/a00133.html
    >

    Chodzi o bloki o stałej wielkości. Poczytam.

    > pozdr
    > Khorne

    Pozdrawiam
    --
    I've probably left my head... somewhere. Please wait untill I find it.
    Homepage (pl_PL): http://uzytkownik.jogger.pl/
    (GNU/)Linux User: #425935 (see http://counter.li.org/)


  • 4. Data: 2009-01-06 11:29:02
    Temat: Re: Memory pool
    Od: Michał 'Khorne' Rzechonek <k...@g...com>

    On 6 Sty, 01:45, Maciej Piechotka <u...@g...com> wrote:
    > Chodzi o bloki o stałej wielkości. Poczytam.

    Z palca, "proszenie o wiecej miejsca" jako cwiczenie dla czytelnika,
    wystarczy dodac bloki do listy.

    template<int Size>
    class ChunkAllocator
    {
    struct Chunk
    {
    char memory[Size];
    Chunk *next;
    Chunk(): next(NULL) { }
    };

    public:
    ChunkAllocator(size_t a_count): m_chunks(new Chunk[a_count])
    {
    for(size_t i = 0; i != a_count-1; ++i)
    {
    m_chunks[i].next = &m_chunks[i+1];
    }

    m_current = &m_chunks[0];
    }

    void *allocate()
    {
    if(m_current == NULL)
    {
    return NULL;
    }

    void *ptr = m_current->memory;
    m_current = m_current->next;

    return ptr;
    }

    void deallocate(void *a_chunk)
    {
    if(a_chunk == NULL)
    {
    return;
    }

    Chunk *chunk = reinterpret_cast<Chunk*>(a_chunk);
    chunk->next = m_current;

    m_current = chunk;
    }

    private:
    Chunk *m_current;
    Chunk *m_chunks;
    };

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: