如果我正在读取当前目录,我应该填写函数getcwd的第二个参数?
答案 0 :(得分:4)
要填充的缓冲区大小:
char result[PATH_MAX];
char *r = getcwd(result, PATH_MAX);
无法正确设置(或发现ENAMETOOLONG
/ ERANGE
)可能会导致缓冲区溢出问题。
警告:Not all platforms provide PATH_MAX。如果你可以确定它在你的平台上,那就非常方便了。
您还可以使用realpath()
,(POSIX.1-2008)malloc()
内存为您做得更干净:
char *result = realpath(".", NULL);
// do stuff with result
free(result);
答案 1 :(得分:2)
您在第一个参数中提供的缓冲区长度,因此不会发生溢出。