如題,主要是想問的是在C語言中利用動態記憶體配置會有上限嗎?
有在網路上查到說動態記憶體配置是沒有上限的,只要有記得釋放記憶體就可以,這個說法是正確的嗎?
就程式面來說,是的。它是無上限。
但就現實面來說。除了您的記憶體本身的交換率足夠的情況下。
也需要配合作業系統的配置才行。
依然會受限於最大可用空間。
但大多數來說,其您還沒用滿可用空間的情況下。
主機一般也會呈現效能崩潰的情況。
所以,它的確是無上限。但不代表真的可以無上限的使用。
這也是為何,你會看到「只要有記得釋放記憶體就可以」這一段話了。
取決於作業系統,malloc 會向作業系統中負責維護可分配記憶體分頁的雙向 linked list 獲得可用的記憶體分頁,如果該 linked list 上面已經沒有可使用的記憶體分頁,如果有,則將該物理記憶體分頁映射到 Process 的 Memoey Image,如果沒有,不會產生映射,malloc 等動態記憶體分配是無法分配記憶體的。