问题是甚至没有分配指向字符串的指针的内存。
您需要 malloc 和 remallocfiles
来保存指向字符串的指针,然后分别 malloc 每个字符串,或者使用 strdup 为您完成它。
size_t files_length = 0;
size_t files_capacity = 16;
char **files = (char**)malloc(files_capacity*sizeof(*files));
if (files == NULL)
explode();
while (...) {
if (...) {
if (files_capacity < files_length + 1) {
files = (char**)remalloc(files, files_capacity*2*sizeof(*files));
if (files == NULL) {
explode();
}
files_capacity *= 2;
}
files_index = files_length++;
files[files_index] = strdup(...);
}
}
// free everything
或者,您可以files
只制作一个大型指针数组,char *files[1024]
然后将文件名 strdup 放入其中。但这当然会限制您可以处理的文件数量,并且如果您只有几个文件要处理,则会花费不必要的内存,尽管只有指针会花费您额外的费用,而不是字符串。