首页 > 技术文章 > 动态内存的分配与释放

doubleconquer 2021-10-09 10:55 原文

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

推荐阅读