#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
. Но вы также должны добавить некоторую проверку возвращаемого значения и т. Д., Поскольку ошибка использования вернется, если первый вызов завершится неудачно, а не просто жестко закодировать предположение о том, что первый вызов выполнен успешно.