Как выполнить malloc char ** table?

Я пытаюсь выполнить malloc и освободить небольшой массив / таблицу однобуквенных строк. Я знаю, что это можно сделать в массиве, но я хочу попробовать сделать это с помощью malloc и free.

У меня есть это прямо сейчас:

char **letters = (char**) malloc(5 * sizeof(char*));
int i =0;
for(i=0; i < NUMLETTERS ; ++i )
{
    letters[i] = (char*) malloc(2*sizeof(char)); //2 is for the letter and null terminator
}

letters[0] = "a";
letters[1] = "b";
letters[2] = "c";
letters[3] = "d";
letters[4] = "e";

//Do stuff here

int i =0;
for(i=0; i < 5; ++i )
{
    free(letters[i]);
}


free(letters);

Приведенный выше код компилируется нормально, и мой промежуточный код также работает и работает нормально, но во время выполнения он получает ошибку во время бесплатных частей. Кроме того, после использования valgrind .. он говорит, что free (letter [i]); недействителен.

Любая помощь?

6
задан Flipper 18 October 2011 в 19:49
поделиться