#includechar * favorite_fruit() { static char fruit[] = "apple"; // 不加static的話這個函數還回的指針以及懸空,因為在函數退出時fruit組數被銷毀 // 加了static後fruit數組分配在數據段裡,而不是堆棧中,生命期和程序一樣長,函數退出時變量 // 依然有效 return fruit; } int main() { char *a = favorite_fruit(); printf("%s\n",a); /* * 查看你的進程能分配多大內存 * 總共分配的內存量取決於系統配置的 */ int MB = 0; while(malloc(1 << 10)) ++KB; printf("Allocated %d KB total\n", KB); return 0; }