char *itoa(int n)
{
char retbuf[20]; /* 錯! */
sprintf(retbuf, "%d", n);
return retbuf; /* 錯!*/
}
一種解決方案是把返回緩衝區聲明為
static char retbuf[20];
本方案並非完美, 尤其是有問題的函數可能會遞歸調用,
或者會同時使用到它的多個返回值時。
參考資料: [ISO, Sec. 6.1.2.4]。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)