8.6 我有个函数, 本该返回一个字符串, 但当它返回调用者的时候, 返回串却是垃圾信息。

确保指向的内存已经正确分配了。例如, 确保你没有做下面这样的事情:
	char *itoa(int n)
	{
	    char retbuf[20];	      /* 错! */
	    sprintf(retbuf, "%d", n);
	    return retbuf;	        /*  错!*/
	}
一种解决方案是把返回缓冲区声明为
    static char retbuf[20];
本方案并非完美, 尤其是有问题的函数可能会递归调用, 或者会同时使用到它的多个返回值时。

参见问题 7.7, 12.19 和 20.1

参考资料: [ISO, Sec. 6.1.2.4]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)