关于动态内存申请的博客

                                                  动态内存

malloc 动态申请内存

int *arr=(int*)malloc(n*sizeof(int))      //int arr[n]

定义一个n长度的数组;

如果要使用,需引用头文件  <stdlib.h>

需注意:

1.栈的大小1M,可配;

2.堆的分配的最大连续块1.2G

  

calloc动态申请内存,并将里面的值置为0

int*arr=(int *)calloc(a,sizeof(int))

等同于:

int*arr=(int*)malloc(a*sizeof(int))

for(int i=0;i<a;i++)

{

arr[i]=0;

}


relloc重新申请动态内存

比如我们第一次申请了a个格子的动态内存,但是发现不够用,我们需要申请2a个格子的动态内存。

int*arr=(int *)relloc(arr,2*a*sizeof(int));

以上等同于

int*arr=(int *arr)malloc(a*sizeof(int));

int*brr=(int *arr)malloc(2*a*sizeof(int));

for(i=0;i<a;i++)

{

brr[i]=arr[i];

}

arr=brr;

brr=NULL;

会有内存泄漏问题

解决方法free

//free  释放,解决内存泄漏

原因:1.越界,漏乘sizeof,relloc第二个参数写错

2.指针没有指向首地址(改变地址指向)

3.重复释放内存

4.释放的不是动态申请的内存

猜你喜欢

转载自blog.csdn.net/August_25/article/details/80114171