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 值的检查等,因为如果第一次调用失败,使用错误会回来,而不是仅仅硬编码第一次调用成功的假设。
美好的一天。我正在尝试使用多个过滤器检索路径名。
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 值的检查等,因为如果第一次调用失败,使用错误会回来,而不是仅仅硬编码第一次调用成功的假设。