Я написал программу на C, которая печатает все файлы в папке, используя dirent.h (в Windows), и она работает нормально, но когда я проверяю .exe-файл с помощью dr.memory, я получаю много UNINITIALIZED READ ошибки.
Все результаты др.памяти: https://pastebin.com/kiiGeg3c
Я проверил страницу памяти dr.memory на предмет неинициализированного чтения (https://drmemory.org/docs/page_uninit.html), но не понял, почему это произошло в моем коде.
void printFolder(char* folderPath)
{
DIR* d = 0;
struct dirent* file = 0;
d = opendir(folderPath);
if (!d)
{
printf("Folder not found!\n");
return;
}
while ((file = readdir(d)))
{
if (strcmp(file->d_name, ".") && strcmp(file->d_name, ".."))
{
printf("file: %s\n", file->d_name);
}
}
closedir(d);
}
int main(void)
{
char folderPath[] = "C:\\folder";
printFolder(folderPath);
getchar();
return 0;
}