Les Snippets

Connexion

Allocateur de pointeur de pointeurs

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 31/01/2007 04:12:12 et initié par SAKingdom [Liste]
Vue : 3642
Catégorie(s) : Divers
Langages dispo pour ce code :
- C



Langage : C
Date ajout : 31/01/2007
Posté par SAKingdom [Liste]
void **malloc2d (unsigned int num, unsigned int size)
{
    char **c, **d, *p;
    if(!num || !size) return 0; //<- à retirer dans un code sûr
    
    if(!(c = (char**)malloc((num*size)+(num*sizeof(char*))))) return 0;
    d = c; p = (char*)(c+num);
    
    do *d++ = p+(--num*size); while(num);
    // OU
    // do *(d+(--num)) = p+(num*size); while(num);
    
    return (void**)c;
}
Remarque :
num = nombre de pointeurs
size = taille de chaque zone mémoire pointé par chaque pointeur

Les pointeurs pointerons de la zone la plus élevé vers la plus  basse: dison qu'il y a 4 pointeurs donc 4 zones. Le pointeur 1 pointera sur la zone 4, le pointeur 2 sur la zone 3 et ansi de suite.
Sinon, il y a l'autre méthode mit en commentaire qui fera pointer le premier pointeur sur la première zone, le second sur la seconde zone etc.

J'ai noté des performances très légèrement meilleur avec la première méthode.

Pour libérer TOUTE la mémoire, un simple free suffit.

Snippets en rapport avec : Pointeur, Mémoire, Allocation



Codes sources en rapport avec : Pointeur, Mémoire, Allocation

{Visual Basic, VB6, VB.NET, VB 2005} RÉCUPÉRER UNE CHAINE DE CARACTÈRE À PARTIR DE SON POINTEUR D'ADRESSE MÉMOIRE
Bonjour à tous, Voilà rien d'exceptionnel, tous les codeurs d'api en ont une comme ça, mais j'ai ...

{C / C++ / C++.NET} ALLOCATION DYNAMIQUE DE LA MEMOIRE, LISTES ET POINTEURS, LA MEMOIRE ARTIFICIELLE
Présentation de la mémoire artificielle et de l'allocation dynamique à travers un jeux simple (voir ...

{C / C++ / C++.NET} RESISTANCE EQUIVALANTE DE RESISTANCES EN SERIE OU PARALLELE
Alors voila, c'est mon tout premier code, il permet de choisir le nombre de resistances puis de calc...

{PHP} BASH: TABLEAUX EN FICHIER
Peut etre vous etes vous deja retrouvé dans la situation ou vous devez enregistrer dans un tableaux ...

{C / C++ / C++.NET} CORRECTEUR DE PONCTUATION
Mon petit programme corrige les fautes de ponctuation telleque un espace avent un poin, la virgule, ...

{Delphi} VISIOMEM - AFFICHER VOTRE MÉMOIRE
Bonjour, cette application permet d'afficher une barre dans le coin inferieur droit de votre écran,...

{Visual Basic, VB6, VB.NET, VB 2005} TRACE ERASE
Ce petit utilitaire permet une suppression de vos traces laissées sur Windows, que ce soit des cooki...

{C / C++ / C++.NET} PROCESS DUMPER
Bonjour/Bonsoir, le titre de l'article parle de lui-même... Ce code montre comment faire un dump d'...

{Delphi} DÉMONSTRATION DE LA GESTION DES OBJETS EN MÉMOIRE PAR DELPHI LORS DE LEUR CRÉATION/DESTRUCTION
Rien de bien nouveau ici, j'espère que ça pourra toutefois aider certains à comprendre comment Delph...

{C / C++ / C++.NET} LIBRAIRIE POUR ÉVITER LES FUITES MEMOIRES
Lorsqu'on utilise fréquemment la fonction malloc() pour allouer de la mémoire, il peut arriver que l...