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 @   夜月明  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示