内存泄露的概念大家可以自行百度下,本文不做阐述。本文要讲的是在程序中分配了内存,但是最后没有使用free()函数来释放这块内存,会导致内存泄露吗?比如有如下代码:

#include <stdio.h>
 
int main() 
{
char *p = (char *)malloc(1); 
 
    if(NULL == p) 
    { 
        printf("分配内存失败!\n"); 
        return 0; 
    } 
    else 
    { 
        *p = 'a';
//free(p);
    } 
 
    return 0; 
} 

在程序中,分配了一个字节大小的内存区域,并使得指针变量p指向这块内存区域。如果这块内存分配成功,则会把字符'a'存放在这块内存区域,并且没有调用free()函数来释放这块内存,会不会导致内存泄露呢?
答案是不会。在程序执行结束后,分配的内存区域会自动被系统处理掉。但是及时释放不用的内存区域则是一个良好的编程习惯,因此建议最后还是要使用free函数来释放掉!

posted on 2017-01-07 15:53  C语言答疑课堂  阅读(295)  评论(0编辑  收藏  举报