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()手动释放,不然一直存在内存
- 函数中的变量,函数调用完内存会自动释放不会保留。所以会导致内存越用越少导致内存消耗又叫内存溢出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人