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