在 Solaris 5.8 机器上,我有以下代码:
[非工作代码]
char *buf;
char *dir;
size_t psize;
psize = (size_t) 1024;
dir = getcwd(buf, psize);
在这台 unix 机器上,上述方法不起作用,并且在尝试运行程序时出现分段错误。仅当我之前声明dir
时才 buf
有效:
[工作代码]
char *dir;
char *buf;
...
dir = getcwd(buf, psize);
当使用另一种风格的 Unix 时,例如 Mac OS X,我没有得到任何关于如何编写代码的似乎非常严格的规则。谁能解释上面的例子发生了什么?谢谢!