尝试生成数组时重新分配无效指针

时间:2016-10-19 22:03:04

标签: c arrays realloc

我正在尝试使用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: =========
...
...

知道我在这里出错了吗?谢谢!

0 个答案:

没有答案