如果动态分配的内存在程序结束后一直未释放,就会出现内存泄露。一般常说的内存泄露是指堆内存的泄露。堆内存是指程序从堆中分配的大小任意的使用完后必须显式释放的内存。应用程序一般使用malloc、new等函数从堆中分配到一块内存,使用完后,程序必须相应地调用free或delete释放该内存块,否则,这块内存就不能被再次使用,就说这块内存泄露了。
如下所示的代码:
void GetMemory(char **p,int num)
{
*p=(char*)malloc(num);
}
void main()
{
char *str=NULL;
GetMemory(&str,100);
strcpy(str,"hello");
printf(str);
}
这段代码能够实现内存的分配,但是这样会导致内存泄露,应在程序结束前加上
free(str);
str=NULL;