天天看點

簡單了解動态記憶體配置設定和靜态記憶體配置設定的差別

在涉及到記憶體配置設定時,我們一般都要考慮到兩種記憶體配置設定方式,一種是動态記憶體配置設定,另一種是靜态記憶體配置設定,我們該怎麼了解這兩者的差別呢? 在我看來,靜态記憶體配置設定和動态記憶體配置設定比較典型的例子就是數組和連結清單,數組的長度是預先定義好的,在整個程式中是固定不變的,是以他在記憶體配置設定時是以靜态記憶體配置設定的方式進行的。而連結清單,它的資訊有可能會随時更改,記憶體的配置設定取決于我們實際輸入的資料,這樣就用到了動态記憶體配置設定的方式。 靜态記憶體配置設定是在程式編譯或者運作過程中,按事先規定的大小配置設定記憶體空間的配置設定方式,他的前提的必須事先知道所需記憶體空間的大小,它的記憶體配置設定在棧區和全局變量區。 動态記憶體配置設定是按輸入資訊的大小配置設定所需要的記憶體單元,他的特點是按需配置設定,記憶體配置設定在堆區。 為了便于了解我們來舉個小例子,靜态記憶體配置設定和動态記憶體配置設定的方式我們可以比作我們去旅遊,旅遊之前沃恩肯定要做的事情是帶好錢,現在我們有兩種帶錢的方式,一種是一次性的帶足夠的錢,另一種是先帶一點錢,足夠我們買飛機票到達旅遊的地點,當我們看到什麼需要買的東西時,打電話給自己的親人或者朋友,讓他們給你打過你足夠買你需要東西的錢。我們可以看到,你要是隻要一次錢,你隻能是提前做好預算,隻能是比你計劃的所需要的錢要多,而且隻能多不能少,否則的話,你到了旅遊的地方将不能再回到你的家,這是一點。而需要多少錢就讓親朋好友打多少錢的方式在我們看來很是笨重,但是我們這裡隻是要說明動态記憶體配置設定的特點,動态記憶體配置設定是按照我們需要多少錢就給我們送多少錢。 在這裡我們可以考慮一下兩者的執行速率和記憶體空間配置設定的問題,由上面的例子我們可以很直白的看出,靜态記憶體配置設定比動态記憶體配置設定的速率要高不少,但是我們也看到,靜态記憶體配置設定的方式有可能會有記憶體剩餘也就是有可能會有我們不使用的記憶體空間,這樣就造成了記憶體的浪費。

繼續閱讀