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 : 6404
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 ...

{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...

{C / C++ / C++.NET} POINTEUR INTELLIGENT
Bonjour à tous, voici mon pointeur intelligent, cette une class qui sutilise comme un pointeur nor...

{Visual Basic, VB6, VB.NET, VB 2005} APPEL DE POINTEUR DE FONCTIONS - API SANS LES DECLARER
Bonjour, Oui, ca existe déjà sur le site EBArtSoft nous avait pondu : http://www.vbfrance.com...

{Delphi} JEU RAMI DES CHIFFRES SOLITAIRE
Largement inspiré du rami des chiffres ce jeu de chiffres est adapté à l'informatique pour être joué...