设为首页 加入收藏

TOP

浅谈C中的malloc和free(一)
2011-12-21 11:26:00 来源: 作者: 【 】 浏览:1740
Tags:浅谈 malloc free
C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用--就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个"浅谈"的字眼,也就是这个意思了!希望对大家有一点帮助!
    
    如果不扯得太远的话(比如说操作系统中虚拟内存和物理内存如何运做如何管理之类的知识等),我感觉这篇文章应该是比较全面地谈了一下malloc()和free()。这篇文章由浅入深(不见得有多深)分三个部分介绍主要内容。
    
    一、malloc()和free()的基本概念以及基本用法:
    
    1、函数原型及说明:
    
    void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
    
    关于分配失败的原因,应该有多种,比如说空间不足就是一种。
    
    void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。
    
    2、函数的用法:
    
    其实这两个函数用起来倒不是很难,也就是malloc()之后觉得用够了就甩了它把它给free()了,举个简单例子:
    
    程序代码:
    
    // Code…
    
    char *Ptr = NULL;
    
    Ptr = (char *)malloc(100 * sizeof(char));
    
    if (NULL == Ptr)
    
    {
    
    exit (1);
    
    }
    
    gets(Ptr);
    
    // code…
    
    free(Ptr);
    
    Ptr = NULL;
    
    // code…
    
    就是这样!当然,具体情况要具体分析以及具体解决。比如说,你定义了一个指针,在一个函数里申请了一块内存然后通过函数返回传递给这个指针,那么也许释放这块内存这项工作就应该留给其他函数了。
3、关于函数使用需要注意的一些地方:
    
    A、申请了内存空间后,必须检查是否分配成功。
    
    B、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。
    
    C、这两个函数应该是配对。如果申请后不释放就是内存泄露;如果无故释放那就是什么也没有做。释放只能一次,如果释放两次及两次以上会出现错误(释放空指针例外,释放空指针其实也等于啥也没做,所以释放空指针释放多少次都没有问题)。
    
    D、虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一些编译器的检查。
    
    好了!最基础的东西大概这么说!现在进入第二部分:
 
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇地址指针的基本概念 下一篇C语言中Exit函数的使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: