尝试返回C中的文件列表,在我的realloc上获取“无效的下一个大小”

时间:2019-08-08 07:39:05

标签: realloc

我在第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);

0 个答案:

没有答案