2012-11-20 92 views
-2

可能重複:
Does free(ptr) where ptr is NULL corrupt memory?
Is it good practice to free a NULL pointer in C?免費NULL指針

我有一個關於騰出一個空指針的問題。

char *p = NULL; 
free(p); 

請問free(NULL)導致崩潰?

還是取決於編譯器?

+1

http://stackoverflow.com/questions/1938735/does-freeptr-where-ptr-is-null-corrupt-memory –

+2

它總是安全的。見http://stackoverflow.com/questions/6084218/is-it-good-practice-to-free-a-null-pointer-in-c重複的問題和答案。 – simonc

回答

3

從免費

void free(void *ptr); 

的free()函數的手冊頁將釋放內存分配由 ptr指向的。如果ptr是一個NULL指針,則不執行任何操作。

如果你想從C語言手冊本身

確認的免費功能使空間指向PTR是 釋放,也就是說,對於進一步劃定公佈。如果ptr是 空指針,則不會發生任何操作。

請參閱this文件的第313頁。

+2

請注意,手冊頁不是標準C函數定義的可靠來源,因爲它們可能包含例如Posix特定的保證,通常對於C不能保證。在這種情況下,行爲也由C標準保證。 –

+0

@SteveJessop正確..我將編輯答案..儘管問題已關閉.. – Krishnabhadra