Die Umsetzung Ihrer eigenen malloc/free mit mmap und munmap

Habe ich umgesetzt durch eigene malloc und frei mit mmap. Jetzt da Sie im Gegensatz zu frei, munmap auch dauert Länge als parameter, daher setzte ich Länge als zusätzliche Informationen in dem zugeordneten Speicher.

Den code für meine malloc und frei ist unten dargestellt. Ich möchte Fragen, ob dieser code gut ist oder bin ich fehlt noch etwas oder tut etwas auf eine falsche Weise.

void * malloc ( size_t size )
{
    int *plen;
    int len = size + sizeof( size ); //Add sizeof( size ) for holding length.

    plen = mmap( 0, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 );

    *plen = len;                     //First 4 bytes contain length.
    return (void*)(&plen[1]);        //Memory that is after length variable.
}

void free ( void * ptr )
{
    int *plen = (int*)ptr;
    int len;

    plen--;                          //Reach top of memory
    len = *plen;                     //Read length

    munmap( (void*)plen, len );
}
Ich würde vorschlagen, machen Sie einen einfachen test-Programm läuft, dass diese ein paar mal mit einer Reihe von verschiedenen Parametern, und es läuft durch Valgrind zu sehen, wenn irgendwelche Probleme auftauchen.
Gehört auf codereview.stackexchange.com ?
immer noch Probleme mit der Navigation durch alle die verschiedenen sub-Foren, von die, die Sie erwähnen, sagen, SO ' s ubuntu-forum. Könnten Sie bitte beraten, wie/wo bekommt man eine Liste von Ihnen?
klicken Sie auf den StackExchange word rechts oben auf der Seite auf der linken Seite - dies wird ein pop-up-Fenster, klicken Sie dann auf "Alle Websites"

InformationsquelleAutor MetallicPriest | 2011-12-12

Schreibe einen Kommentar