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

{Visual Basic, VB6, VB.NET, VB 2005} JEU DE MÉMOIRE CLASSIQUE
C'est un jeu de mémoire ou il faut se souvenir de ce qui se cache derrière les cases. Un Timer est ...

{Delphi} LE CERCLE ENCHANTÉ D'ANDRES GÎT EN NOS MÉMOIRES
Pour compléter le "post" de Barbichette sur l'algorithme de tracé de cercle de Bresenham et l'optimi...

{Assembleur} ASYNC LIAISON INTERNET EN MODE ASYNCHRONE WININET
Ce source est une traduction (masm) d'un exemple du windows SDK,portnt le même nom. Il utilise de...

{Delphi} RUMMIKUB DES CHIFFRES CONTRE ORDINATEUR
La crainte de devenir sourd … pour comprendre il faut consulter « Jeu rami des chiffres solitaire » ...

{Delphi} DOWNSAMPLING OU COMMENT BIEN OPTIMISER LE CODE
Salut, je dépose une source qui contient une unité très optimisée sur laquelle vous pouvez jeter un...

{Assembleur} MPRINT4.ASM
Routine d affichage en mode texte accer directe a la mémoire routine pour ODO vectra OS 32b ...

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