我正在尝试动态地在C中增加一个字符串数组,但是当我尝试获取分配的数据时(而不是在分配时),我得到了分段错误。这是更复杂的代码的一部分,并且是简化的,files [i] .file_id是正确的,类型为char *
。
char **names;
names = malloc(sizeof(char *));
files = fileslog_get(FLOG_STATE_NEWOUT, -1);
i = 0;
while(files[i].file_id != NULL)
{
if(stat(files[i].file_id, &st) > 0 && st.st_size < 64100)
{
if(i != 0)
names = realloc(names, (i+1)*sizeof(char *));
names[i] = malloc(256);
strcpy(names[i], files[i].file_id);
}
++i;
}
tot_files = i;
有效版本也会有一个大小为256的字符串的动态数组,但我甚至无法编译它(使用char *names[256]
并删除malloc(256)
它甚至没有编译)。