![](https://i-blog.csdnimg.cn/blog_migrate/7b34327d94574fc60aa2a23c24a1f189.jpeg)
内存泄漏
为什么会有内存呢?
答:当你申请了一个动态内存时,你使用完之后却没有释放那个动态内存,此时就产生了内存泄漏。而在我们生活中也有许多的内存泄漏,当你买的手机不管是64G、128G的内存。在使用一段时间后就会产生卡顿现象,那个时候你就会感觉是你的手机内存不够了,就会产生卡顿的现象。其实并不是你的手机内存不够,而是你的手机产生了内存泄漏。而解决这个问题最好的方法就是把你的手机关一下机就好了。因为内存泄漏,只要程序运行结束之后就是释放所有的内存。
而在C语言上面申请动态内存的方式主要有
malloc 、calloc、realloc 还有用来释放内存的free。
接下里我我们看一下他们如何使用吧!
void Malloc1(char *brr,int n)
{
char *arr={(char *)malloc(n*sizeof(char))};
int i=0;
for(i=0;i<n;i++)
{
arr[i] = brr[i];
}
arr[i] = '\0';
printf("%s\n",arr);
}
这就是一个用malloc申请的动态内存,但是是没有释放的。用#include <vld.h>chun测出来内存泄漏的
此时的用free释放内存后就没有内存泄漏了!
calloc
而calloc动态内存是定义时把所有值赋值为 0;其他的跟malloc 一样。
realloc
realloc 是动态内存不够时增加动态内存的,其他用法跟malloc一样。