#include
#include
intmain()
;//靜態分配陣列
int length;
printf
("請輸入你需要分配的陣列長度:");
scanf
("%d"
,&length)
;int
* parr =
(int*)
malloc
(sizeof
(int
)* length)
;//malloc為分配記憶體的函式,返回第乙個位元組的位址,但是預設返回是乙個幹位址(無法知道位址代表的是幾個位元組的位址),沒有實際意義,必須加強制型別轉換為指定的指標型別才有意義,(int *)表示強轉為int型別的指標。
/* //我們可以把parr當作乙個普通的陣列來使用
*parr = 10; //類似於a[0] = 10;
parr[1] = 20; //類似於a[1] = 20;
cout << *parr << "\n" << parr[1];
*/free
(parr)
;//把parr所代表的動態分配的記憶體釋放
return0;
}
靜態呼叫函式時,在函式呼叫結束後,占用的記憶體會自動釋放。
要想跨函式使用記憶體,而記憶體不會自動釋放,可以通過malloc函式。
main()
intfun
(int
** q)
乙個例子
# include
# include
struct student
;struct student*
createstudent
(void);
void
showstudent
(struct student*);
intmain
(void
)void
showstudent
(struct student* pst)
struct student*
createstudent
(void
)
c malloc分配記憶體
php中的記憶體分配有用類似emalloc這樣的函式,emalloc實際上是c語言中的malloc的一層封裝,php啟動後,會向os申請一塊記憶體,可以理解為記憶體池,以後的php分配記憶體都是在這塊記憶體池中進行的,以至於efree,也不會向os退回記憶體,而只是設定標誌位,標識efree這塊記憶...
記憶體動態分配
陣列的元素儲存於記憶體中連續的位置上。當乙個陣列被宣告時,它所需要的內存在編譯時就被分配。但是,你也可以使用動態記憶體分配在執行時為它分配記憶體。malloc所分配的是一塊連續的記憶體。例如,如果請求它分配100個位元組的記憶體,那麼它實際分配的記憶體就是100個連續的位元組,並不會分開位於兩塊或多...
動態分配記憶體
動態記憶體分配即分配記憶體大小在執行時才確定,一般在堆中分配。c語言動態記憶體分配相關的函式。include void malloc size t size malloc的使用比較直接,乙個成功的malloc呼叫返回分配的size大小的記憶體的指標。失敗時返回null並將錯誤 置為enomem。教材...