06动态内存分配与释放

动态内存分配与释放

关键字:malloc(),功能上只能返回第一个字节的地址

程序例子

# include <stdio.h>
{
    int a[5] = {4, 10, 2, 8, 6};
    int len;
    print("请输入你需要分配的数组的长度:len = ");
    scanf("%d",len);
    int * pArr = (int*)malloc(sizeof(int)*len);//sizeof(类型)获取类型的字节数,(int*)强制类型转换作用得出首个字节地址属于那种具体数据类型
    //pArr就是a的作用,代表动态分配的首地址,*pArr=4;等价于a[0]=4
    pArr[1] = 10;//类似于a[1] = 10;
    
    //输入动态数组
    for(int i=0;i<len;++i)
        scanf("%d",&pArr[i]);
    //输出动态数组
    for(int i=0;i<len;++i)
        prinf("%d\n",*(pArr+i));
    
    free(pArr);//释放完pArr动态分配的内存
      
    return 0;
}

注意:

  • 动态分配内存必须加free()手动释放,不然一直存在内存
  • 函数中的变量,函数调用完内存会自动释放不会保留。所以会导致内存越用越少导致内存消耗又叫内存溢出。
posted @ 2022-07-01 11:42  夜月明  阅读(49)  评论(0)    收藏  举报