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 : 7020
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} POINTEUR INTELLIGENT
Bonjour à tous. Voici une classe permettant de gérer un pointeur un peu plus intelligemment, afin...

{C / C++ / C++.NET} EXEMPLE DE POINTEURS DE FONCTION
Ce code source traite différents exemples de pointeurs de fonction : -Pointeur de fonction -Tablea...

{Visual Basic, VB6, VB.NET, VB 2005} CLASSE .NET DE LECTURE/ÉCRITURE DANS LA BASE DE REGISTRE
Voici un bout de code permettant de travailler sereinement dans la base de registre. On peut lire...

{Delphi} MEMORYSTATUS
Mon tout premier programme après 2 jours de découverte de Delphi. Etude du TMemoryStatus et de la mé...

{C / C++ / C++.NET} [C++] CLASS REGISTER
Permet de garder une trace de toutes les classes crees. J'ai fais ce code a la base car j'utili...

{C / C++ / C++.NET} [DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL
Cette source permet de calculer une racine carrée par la méthode de Newton avec une approximation pa...

{C / C++ / C++.NET} EVALUER UNE EXPRESSION MATHÉMATIQUE
/* ce programme vérifie bien la saisie correcte de votre expression*/ /*idem, il prend en compte le...

{C / C++ / C++.NET} SMART POINTEUR À COMPTEUR DE RÉFÉRENCE
Encore un pointeur intelligent, à compteur de référence, qui se comporte à l'utilisation comme un po...