一.關(guān)于動態(tài)分配內(nèi)存
1.我們?yōu)槭裁匆獎討B(tài)分配內(nèi)存?
原因:在c/c++語言中蚂斤,編寫程序有時不能確定數(shù)組應(yīng)該定義為多大枚冗,因此這時在程序運行時要根據(jù)需要從系統(tǒng)中動態(tài)多地獲得內(nèi)存空間晋柱。所謂動態(tài)內(nèi)存分配壁晒,就是指在程序執(zhí)行的過程中動態(tài)地分配或者回收存儲空間的分配內(nèi)存的方法骂际。動態(tài)內(nèi)存分配不像數(shù)組等靜態(tài)內(nèi)存分配方法那樣需要預先分配存儲空間疗琉,而是由系統(tǒng)根據(jù)程序的需要即時分配,且分配的大小就是程序要求的大小歉铝。
2.相關(guān)的函數(shù)
(1)malloc 函數(shù)
其作用是在內(nèi)存的動態(tài)存儲區(qū)中分配一個長度為size的連續(xù)空間
如果使用指針變量接收數(shù)據(jù)
必須先為這個指針變量分配一片指向的內(nèi)存空間
有內(nèi)存空間 才能存數(shù)據(jù)
導入頭文件stdlib.h
使用malloc(memory alloc)申請內(nèi)存空間
(2)具體實例:
這時就相當于創(chuàng)建了一個數(shù)組 p[n] ,這個n的值并不需要像定義一個普通數(shù)組一樣必須是常量, 可以使程序運行時得出的, 或是用戶輸入的
(2)free函數(shù)
在堆中申請的內(nèi)存空間不會像在棧中存儲的局部變量一樣 ,函數(shù)調(diào)用完會自動釋放內(nèi)存 , 如果我們不手動釋放, 直到程序運行結(jié)束才會釋放, 這樣就可能會造成內(nèi)存泄漏, 即堆中這片內(nèi)存中的數(shù)據(jù)已經(jīng)不再使用, 但它一直占著這片空間,所以當我們申請的動態(tài)內(nèi)存不再使用時 ,一定要及時釋放 .
(2)具體實例: