Allouer dynamiquement un tableau à deux dimensions avec uniquement un malloc

Portrait de donkee

En faite je reprend le même principe que pour deux malloc, mais en allouant le tout en une seule fois !!!
Puis ensuite, il s'agit de jouer avec les pointeurs !!!

En terme de complexité c'est toujours la même o(lignes), sans compter le temps d'allocation de la mémoire !!!
Et puis pour la libération des ressources, il y a juste un seul free à faire ^^

#include "stdlib.h"
 
int** allocation(int lignes, int colones)
{
    int** tableau;
    int* data;
    int i;
 
    if(lignes <= 0 || colones <= 0)
    {
        return NULL;
    }
 
    tableau = (int**) malloc(lignes*colones*sizeof(int) + lignes*sizeof(int*));
    if(tableau == NULL)
    {
        return NULL;
    }
 
    for(i=0,data=(int*)(tableau+lignes); i<lignes; i++,data+=colones)
    {
        tableau[i] = data;
    }
 
    return tableau;
}
 
void desallocation(int** memoire)
{
    free(memoire);
}
Fichier attachéTaille
Plain text icon malloc.c.txt965 octets