Profiel van 麦田守望者异想空间Foto'sWeblogLijsten Extra Help

Weblog


    10-9-2009

    对getcwd函数的一例应用的不解

    OpenBSD源代码树的pwd.c中,有这样一个代码片段:

    int main(int argc, char *argv[])
    {
    /* 省略其他代码 */

    char *p;

    if ((p = getcwd(NULL, (size_t)0)) == NULL)
    err(1, "getcwd");
    (void)printf("%s\n", p);
    exit(0);
    }

    该段代码的目的是获得当前工作目录,并打印出来。请注意getcwd的调用方式。根据OpenBSD Maunalgetcwd函数的描述:如果给第一个参数传递NULL的话,getcwd会在某个地方分配内存空间,存放当前目录的字符串,并返回指向这个字符串的指针。调用方应该在稍后调用free,释放字符串占用的内存空间。然而,在上述从OpenBSD源代码中摘抄的代码片段,并没有调用free。
    不清楚代码的作者为何这样写。疏忽遗漏了,还是getcwd函数的行为有其特殊性?如果看到这的读者你了解内幕,请赐教,不胜感激!

     
    *