從http://en.cppreference.com/w/c/memory/malloc:嚴格來說,C標準是否要求在malloc之後必須調用free,以及在不滿足此要求時規定了什麼?
返回的指針必須用免費被解除分配()或realloc()。
從http://en.cppreference.com/w/c/memory/calloc:
返回的指針必須用免費被解除分配()或realloc()。
嚴格地說,爲什麼必須返回指針被釋放?
現在我知道POSIX強制內存將在程序終止時被釋放,所以在實踐中調用malloc
並立即終止不會造成任何傷害。但這不是我所問的。
這是硬要求(「必須被解除分配」)存在於C標準,或這是cppreference貢獻者的發明,督促程序員不泄漏存儲器?如果這樣的硬性要求是存在於標準,這是否意味着,按照C標準(POSIX和其他操作系統相關的東西放在一邊!),該計劃是UB如果malloc
返回的指針不是free
「d,或做該標準是否定義了未能達到這一要求的後果? (這將是特別有趣,因爲這可能意味着標準涉及當程序已經終止會發生什麼!)
在某些應用程序中,永不終止的嵌入式應用程序,可能是您調用malloc(),但永遠不會釋放()以構建將永久生存的內部數據結構,或者直到有人拉動電源線。所以在這種情況下,完成_requirement_來釋放分配的內存塊是不可能的。 – user1048576
我一直在閱讀這個語句,如下所述:「如果你想釋放內存,你必須使用'free()'或'realloc ()'」。 –
我認爲重點不在於「必須」,而在於「自由」。當該塊被釋放時,必須使用「free」功能。 –