2011-02-14 119 views

回答

2

您在第一个参数中提供的缓冲区的长度,以避免发生溢出。

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);