How to Malloc char **

Comment malloc,() assign(), display() et free() un char ** Ce code fonctionne parfaitement, valgrind ne display aucune erreur. Les erreurs a éviter sont : Oublier de mettre un NULL a la fin du char **. Oublier de mettre des '\0' à la fin de CHAQUE char *.
mail@pastecode.io avatar
unknown
c_cpp
3 years ago
895 B
2
Indexable
Never
#include <stdlib.h>
#include "../backup-2/includes/my.h"

void allocate_mem(char **buffer)
{
    for (int i = 0; i < 5; i++)
        buffer[i] = malloc(sizeof(char) * 5 + 1);
}

void assign_values_array(char **buffer)
{
    int i = 0;
    int c = 0;

    for (i = 0; i < 5; i++) {
        for (c = 0; c < 5; c++)
            buffer[i][c] = '0' + c + i;
        buffer[i][c] = '\0';
    }
    buffer[i] = NULL;
}

void display_array(char **buffer)
{
    for (int i = 0; buffer[i] != NULL; i++) {
        my_putstr(buffer[i]);
        my_putchar('\n');
    }
}

void free_array(char **buffer)
{
    int i = 0;

    for (i = 0; buffer[i] != NULL; i++)
        free(buffer[i]);
    free(buffer);
}


int main(void)
{
    char **buffer = malloc(sizeof(char *) * (5 + 1));

    allocate_mem(buffer);
    assign_values_array(buffer);
    display_array(buffer);
    free_array(buffer);
    return (0);
}