我有一個函數foo(),它分配內存並返回它。我的標準做法是在我的主要功能結束時釋放它嗎?C編程 - 返回指向Freed的指針
char* foo(){
char * p;
p = malloc(sizeof(char) * 4); /* edit - thanks to msg board */
p[0] = 'a';
p[1] = 'b';
p[2] = 'c';
p[3] = '/0'; /* edit: thanks to the msg board. */
return p;
}
int main(int argc, char *argv[])
{
char * p2;
p2 = foo();
printf("%s", p2);
free(p2);
return 0;
}
請注意,這是一個樣式問題:如果沒有釋放,它將在退出時返回到操作系統。主要做可能更好,但不是必需的。 – 2010-08-06 18:31:31
我一直希望在退出之前釋放它,以防您的主函數的主體稍後被移動或複製。另外,我意識到這只是一個例子,但如果你正在做這樣的事情,你可能想看看strdup。 – 2010-08-06 18:33:02