glob() 在使用 GLOB_APPEND 作为标志时给出 "realloc(): invalid pointer"

glob() gives "realloc(): invalid pointer" when using GLOB_APPEND as the flag

美好的一天。我正在尝试使用多个过滤器检索路径名。

glob_t globbuf;

for(int i = 0; i < 2; i++)
{
   char*currentFilter = concat(Workdir, fileNameFilter[i]);
   int result;
   printf("This is the current filter %s", currentFilter)
   result = glob(currntFilter,GLOB_APPEND, NULL, &globbuf)
}

当输入 ./a.out 时,它会很好地进行第一次迭代,直到遇到 glob() 函数。 终端打印出:

realloc(): 无效指针

在写这篇文章的时候,我想我发现是不是 glob 没有任何可以追加的东西?这就是我收到此错误的原因吗?

我主要用 C# 编写,这类似于空引用异常吗?

谢谢。

globbuf 未初始化。您只能将 GLOB_APPEND 与先前成功调用 glob 初始化的 glob_t 一起使用。例如,您可以 i==0 ? 0 : GLOB_APPEND 而不是 GLOB_APPEND。但是你还应该添加一些 return 值的检查等,因为如果第一次调用失败,使用错误会回来,而不是仅仅硬编码第一次调用成功的假设。