動態記憶體的分配與釋放
阿新 • • 發佈:2021-10-09
#include <stdio.h> //#為預處理命令 #include <malloc.h>//記憶體分配 int main(void) { //靜態分配記憶體(陣列) int a[5] = {2,3,5,6,9}; int len = 0; //len 為一維陣列的長度,可以根據需求動態分配長度 printf("請輸入你需要分配的陣列長度"); scanf("%d",&len);//len =5 //mallloc分配記憶體的函式,返回第一個位元組的地址,但是預設返回的是一個32位(4個位元組)的地址,沒有實際的意義,必須強制轉化為指定的指標型別才有意義 //(int*)表示強制轉化為int型別的指標,那麼返回的地址指向的就是第一個元素的地址,那麼第二個元素的地址就是第一個元素 後面的那一位 int* pArr = (int*) malloc(sizeof(int)*len) *pArr = 2;//類似於a[0] = 2,因為陣列名就是指向了第一個元素的地址,跟pArr一樣 pArr[1] =3;//類似於a[1] = 3; free(pArr);//把pArr所代表的動態分配的20個位元組的記憶體釋放 return 0 ; }