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()手动释放,不然一直存在内存
- 函数中的变量,函数调用完内存会自动释放不会保留。所以会导致内存越用越少导致内存消耗又叫内存溢出。

浙公网安备 33010602011771号