eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingMemory pool › Re: Memory pool
  • Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!plix.pl!newsfeed1.plix
    .pl!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!198.18
    6.194.249.MISMATCH!transit3.readnews.com!news-out.readnews.com!news-xxxfer.read
    news.com!postnews.google.com!i20g2000prf.googlegroups.com!not-for-mail
    From: Michał 'Khorne' Rzechonek <k...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: Memory pool
    Date: Tue, 6 Jan 2009 03:29:02 -0800 (PST)
    Organization: http://groups.google.com
    Lines: 57
    Message-ID: <9...@i...googlegroups.com>
    References: <8...@n...piechotka.com.pl>
    <4...@3...googlegroups.com>
    <8...@n...piechotka.com.pl>
    NNTP-Posting-Host: 217.115.75.232
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    X-Trace: posting.google.com 1231241342 14107 127.0.0.1 (6 Jan 2009 11:29:02 GMT)
    X-Complaints-To: g...@g...com
    NNTP-Posting-Date: Tue, 6 Jan 2009 11:29:02 +0000 (UTC)
    Complaints-To: g...@g...com
    Injection-Info: i20g2000prf.googlegroups.com; posting-host=217.115.75.232;
    posting-account=lPvy4goAAADOdPRFniRD9mOKxc536sy7
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.4)
    Gecko/2008102920 Firefox/3.0.4,gzip(gfe),gzip(gfe)
    X-HTTP-Via: 1.1 proxy4-nsn (NetCache NetApp/6.0.6P2D4)
    Xref: news-archive.icm.edu.pl pl.comp.programming:180638
    [ ukryj nagłówki ]

    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;
    };

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

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: