如何创建动态内存
首先,会用到molloc语句,其实好多小伙伴都已经看出来了,没错这就是堆!
下面先来介绍一下栈和堆的概念:
1、栈(stack):有时候也叫“堆栈”,局部变量所在的内存区域,函数可以调用,window系统默认大小为1M;
2、堆(heap):动态内存开辟区域,大小接近1.5G,使用时需要注意释放内存。
使用时的代码如下:
int *p=(int *)malloc(n*sizeof(int));
//创建10n的整型数组并返回
int Fun(int n)
{
int i=0;
int *p=(int *)malloc(10*n*sizeof(int));
for(i;i<10*n;i++)
{
return p;
}
}
colloc:等同于malloc,但只能把每个元素都置0.
语法如下:
calloc(n,sizeof(int));
realloc:用于修改动态内存的大小,一般用于扩容。
语法如下:
p=(int *)realloc(p,m*sizeof(int));
free:释放申请的内存,容易引起程序崩溃.
使用方法:
free();
内存泄漏:开辟内存,没有释放。
free崩溃的原因:
1.越界。多写符号,开辟内存少于malloc和realloc,忘记乘以sizeof(*);
2.移动指针的位置,如p(p为指针)++;
3.重复释放内存;
4.释放不是动态创建的内存,如局部数组int a[10].
并且,这些原因中出现概论最大的就是越界了,下来是移动指针的位置,再下来是重复释放内存,最后是释放不属于动态创建的内存。
今天的分享就到这里了,我们下期再见!