動態記憶體的開闢 經典舉例

2021-08-20 03:22:57 字數 483 閱讀 2347

首先在這裡展示一段經典死迴圈code

int i =0;

int arr[10]=;

for(i=0;i<=12;i++)

此段**的結果是進入 嘲笑你的無限hehe當中

究其原因 在這裡要簡單了解一下動態記憶體開闢的知識

在我們的記憶體開闢過程中區域性變數屬於棧區記憶體的開闢

而棧區的記憶體開闢規律是先使用高位址 再使用低位址

可是在陣列內部的記憶體開發位址規律是由低位址到高位址

在vs環境下 陣列的記憶體開闢會餘留兩個位址以避免溢位錯誤

所以當記憶體開闢之後 i的位址高於陣列arr 12個位址

i自此的值又變成了0 所以進行無限次的死迴圈過程 

動態記憶體開闢

記憶體分配有三種方式 1.從靜態儲存區分配,生命週期隨程式的結束而結束,比如全域性變數,static變數 2.從棧空間分配,函式呼叫完其被自動釋放 3.從堆空間分配,即動態記憶體開闢,比如 malloc,calloc,realloc,何時申請何時釋放 malloc 函式原型void malloc s...

動態記憶體開闢

記憶體分配有三種方式 1.從靜態儲存區分配,生命週期隨程式的結束而結束,比如說全域性變數,static變數 2.從棧空間分配,函式呼叫完成後被自動釋放 3.從對空間分配,即動態記憶體開闢,比如malloc,calloc,realloc malloc calloc realloc和free mallo...

動態記憶體開闢

1.記憶體分配方式 三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的 整個執行期間都存在。例如全域性變數,static 變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的...