我會很高興,如果有人可以幫助我理解完全以下代碼之間的區別:malloc會在函數結束時自動釋放內存嗎?
// Code (1)
void f1 (void){
int * ptr1 = malloc (sizeof(int));
}
和
// Code (2)
void f2 (void){
int * ptr2 = malloc (sizeof(int));
free(ptr2);
}
據我所知,自由的指令是用於重新分配有用但是另一方面,我知道每次我們調用一個函數g時,如果這裏有新的變量需要聲明,它們將在g執行後被創建和銷燬(即釋放,對嗎?)。
結果:
我們需要使用指令自由代碼(2),或者它是多餘的? (但也許建議使代碼更清晰)
感謝
PS:你可能也有興趣幫助我My previous related question。在那裏,一些用戶建議使用內存的動態分配,我試圖理解爲什麼/如何。
不,你將不得不使用免費的' – CoderPi
請注意,還有另一個分配函數['alloca'](http://linux.die.net/man/3/alloca),它*在調用函數結束時自動釋放內存。不過,我從來沒有見過它用過。我認爲這是因爲大多數開發人員都認爲,支持'alloca'所需的額外簿記並不能證明它的用途,而只是確保您的'malloc'和'free''調用已正確配對。 – DaoWen
@DaoWen:在C標準或POSIX中沒有描述'alloca()'。 – pmg