我正在尝试使用C来获取包含给定目录中所有文件名的字符串数组。我有一个2D char数组,我每次尝试重新分配它以增加sizeof(char *)
的大小,但是当我尝试运行程序时会出现错误。
以下是我的代码的相关部分:
char **files;
DIR *d;
struct dirent *dir;
d = opendir(roots[i]);
if (d) {
int num = 0;
while ((dir = readdir(d)) != NULL) {
if (num > 1) { // Skip over '.' and '..'
files = (char **)realloc(files, (num + 1) * sizeof(char*));
files[num] = malloc(strlen(dir->d_name) * sizeof(char));
strcpy(files[num], dir->d_name);
}
num++;
}
closedir(d);
} else {
fprintf(stderr, "Error: Cannot open directory");
}
我收到以下错误:
*** glibc detected *** ./myprog: realloc(): invalid pointer: 0x00007ffd4e1fbcf8 ***
======= Backtrace: =========
...
...
知道我在这里出错了吗?谢谢!