我在第4个文件上不断收到此错误。我不确定自己在做什么错。
“ ./ bin / main”中的错误:realloc():无效的下一个大小:0x016d1888
/**
* Scans a directory and retrieves all files of given extension
*/
char **scandir(const char dirname[], const char *ext, size_t *elems) {
DIR *d = NULL;
struct dirent *dir = NULL;
char **list = NULL;
d = opendir(dirname);
if (d) {
while ((dir = readdir(d)) != NULL) {
if (endsWith(dir->d_name, ext) == 1) {
printf("%s\n", dir->d_name);
(*elems) += 1;
list = (char**)realloc(list, sizeof(*list) + sizeof(char*));
int size = strlen(dir->d_name) + strlen(dirname) + 2;
list[(*elems)] = (char*)malloc(size);
memset(list[(*elems)], 0, size);
sprintf(list[(*elems)], "%s/%s", dirname, dir->d_name);
}
}
closedir(d);
}
return list;
}
size_t imgCount = 0;
char **imgFiles = scandir("./img", "gif", &imgCount);