glob() выдает «realloc(): недопустимый указатель» при использовании GLOB_APPEND в качестве флага

#c #ubuntu #windows-subsystem-for-linux

#c #ubuntu #windows-subsystem-for-linux

Вопрос:

Добрый день. Я пытаюсь получить имена путей, используя несколько фильтров.

 glob_t globbuf;

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

Когда вводится ./a.out , он проходит первую итерацию нормально, пока не попадет в функцию glob().
терминал выводит:

realloc(): недопустимый указатель

При написании этого, я думаю, я обнаружил, что глобусу нечего добавлять? Поэтому я получаю эту ошибку?

Я пишу в основном на C #, похоже ли это на исключение нулевой ссылки?

Спасибо.

Ответ №1:

globbuf неинициализировано. Вы можете использовать только GLOB_APPEND с glob_t инициализированным предыдущим успешным вызовом glob . Так, например, вы могли бы сделать i==0 ? 0 : GLOB_APPEND вместо GLOB_APPEND . Но вы также должны добавить некоторую проверку возвращаемого значения и т. Д., Поскольку ошибка использования вернется, если первый вызов завершится неудачно, а не просто жестко закодировать предположение о том, что первый вызов выполнен успешно.