При циклическом просмотре папки в C с использованием dirent.h (в Windows) и проверке EXE-файла с помощью dr.memory я получаю сообщение UNINITIALIZED READ - PullRequest
1 голос
/ 03 июля 2019

Я написал программу на 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;
}
...