使用动态内存的原因
- 根据变量定义数组长度
- 栈:1M,空间小,操作系统管理
- 堆(动态内存分配的空间):2G,程序员管理,用完须释放。
- 如果动态内存用完不释放,即会造成内存泄漏。
泄漏的内存自动还原的情况:(1)设备重启(2)程序(程序)退出 - 申请内存:malloc
- 将每个元素置为零:calloc
- 内存大小调整:realloc
- 释放内存:free
- 例:
#include<stdio.h>
#incldue<stdlib.h>
int main()
{
int n;
scanf("%d",&n);
int *p=(int *)malloc(n*sizeof(int));//malloc的返回值类型是int *,强转
for(int i=0;i<=n;i++)
{
p[i]=i;
}
}
for(int i=0;i<=n;i++)
{
printf("%d ",p[i]);
}
free(p)
return 0;
}