我在使用opendir()
:时收到了一些奇怪的结果
int dtw(char *path) {
struct stat statbuf;
...
else if (S_ISDIR(statbuf.st_mode)) {
printf("Path is: %sn", path);
struct dirent *dirent;
DIR *dirp;
if ((dirp = opendir(path)) == NULL) {
puts("Can't open directory.");
return -1;
}
printf("Path is: %sn", path);
}
...
}
结果:
Path is: /home/.../etc
Path is:
唯一会影响path
的是这里的opendir()
。它有我没有看到的副作用吗?还是有其他事情在起作用?
不允许任何更改;opendir()
的定义是:
DIR *opendir(const char *dirname);
而const
说opendir()
并没有改变它
我想知道您的path
是否是一个指向已释放内存的指针?在这种情况下,内存可能已经分配给opendir()
,而您看到的变化是因为您使用了一个指向不应该查看的内存的悬挂指针?