La mise en œuvre de votre propre malloc/free avec mmap et munmap

J'ai mis en œuvre par les propres malloc et gratuit à l'aide de mmap. Maintenant, puisque contrairement à gratuit, munmap prend également en longueur comme paramètre, donc j'ai mis de la longueur comme une information supplémentaire dans la mémoire mappée.

Le code de mon malloc et gratuit est indiqué ci-dessous. Je veux demander, si ce code est bon ou suis-je encore oublié quelque chose ou de faire quelque chose dans un mauvais sens.

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 );
}
Je suggère de faire un test de base du programme qui s'exécute ces un tas de fois avec un tas de différents paramètres et en l'exécutant à travers Valgrind pour voir si des problèmes de pop-up.
Appartient sur codereview.stackexchange.com ?
toujours avoir de la difficulté à s'orienter dans tous les sous forums, de celui que vous mentionnez, par exemple, SI le forum ubuntu. Pourriez-vous veuillez indiquer comment et où obtenir une liste?
cliquez sur le StackExchange mot de droite en haut de la page à gauche - cela fera apparaître une fenêtre puis cliquez sur "Tous les Sites"

OriginalL'auteur MetallicPriest | 2011-12-12