1. 程式人生 > 其它 >動態記憶體的分配與釋放

動態記憶體的分配與釋放

#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 ;
  }