我用 C 语言编写了一个程序,该程序使用 dirent.h(在 Windows 中)打印文件夹中的所有文件,并且工作正常,但是当我使用 dr.memory 检查 .exe 文件时,我得到了很多 UNINITIALIZED READ 错误。所有 dr.memory 结果: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;
}