У меня есть массив строк (char **
), который инициализируется как NULL
. После передачи его адреса, когда я пытаюсь получить доступ к его элементам, возникает ошибка сегментации.
//following code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void parse(char ***test, char *str)
{
int i;
*test = (char**)malloc(sizeof(char*) * 3);
for(i=0; i<3; i++)
{
*test[i] = (char*) malloc(sizeof(char)*(strlen(str)+1));
strcpy(*test[i], str);
}
}
int main(void)
{
int i;
char *str = "Hello world";
char **test = NULL;
parse(&test, str);
for(i=0; i<3; i++)
printf("%s\n", test[i]);
return 0;
}
При использовании отладчика внутри синтаксического анализа функции все элементы имеют правильные значения, правильно инициализированы и распределены, но из основной функции только 0 индексированная строка дает правильное значение, остальные являются ошибкой сегмента.