動態記憶體配置5大優勢
比較彈性的處理方法是:程式撰寫的時候不設定陣列的大小,而在執行時才以動態的方式指定、配置和使用這個陣列,例如讓使用者由鍵盤輸入它所需要的陣列大小,這時才決定配置所需的記憶體。 動態記憶體配置,是由我們明確地以「malloc」等指令來取得記憶體空間,並以「free」釋放不再需要的記憶體空間。 以此種方式配置的記憶體空間是不會自動被釋放的,如果我們沒有在程式中使用「free」來釋放,則其生命週期將一直持續到程式結束為止。 但是,在使用陣列的時候,總有一個問題困擾著我們:陣列應該有多大? 另外像文書編輯程式、 或是影像編輯應用程式通常不曉得要編輯的文件或是影像有多大, 因此通常以動態配置來取得存放這些資料的記憶體。 它可以當成是一種分配有限記憶體資源所有權的方法。 當記憶體塊比要分配的長度大兩倍以上,記憶體塊平均分裂成兩塊。 高階語言封裝了記憶體位址的概念,記憶體通常是通過指標來間接存取的。 這樣,你的程式在執行時就申請了固定大小的你認為足夠大的記憶體空間。 新增/刪除資料較Array簡單,只要對O個node(所有與欲新增/刪除的node有pointer相連的node)調整pointer即可,不需要如同Array般搬動其餘元素。 動態記憶體配置: C 語言中指標結合陣列的宣告相當隱晦,容易錯誤 全域性變數和靜態變數分配在靜態資料區,本地變數分配在動態資料區,即堆疊中。 C 程式可以分很多的模組來製作, 個別模組由不同的人來製作, 剛才這一段程式除了可以處理自己模組內的變數, 也可以處理別的模組裡的變數, 只要該變數的型態是 double 就可以了, 程式在撰寫的時候, 很明顯地我們對想要處理的資料做了一種一般化的處理, 我們並不是假設要處理的資料存放在某一個特定的變數裡, 而是假想說要處理的資料位於任何一個型態為 動態記憶體配置 double 的變數內。 這個情況就好像你擬定一個推銷的策略時, 不會是隻針對某一個特定的人, 而會做最起碼的一般化, 至少針對某一個特殊族羣是有用的。 動態分配的記憶體在被程式設計師明確釋放或被垃圾回收之前一直有效。 與靜態記憶體分配的區別在於沒有一個固定的生存期。 在電腦科學中, 動態記憶體分配(Dynamic 動態記憶體配置…