free()函数的用法

来源:互联网 发布:win10软件注册表位置 编辑:程序博客网 时间:2024/06/01 09:18

       free()的调用方式是:void   free(void   *ptr)。是释放由ptr所指的内存,并将它返回给堆,以便这些内存成为再分配时的可用内存。free()函数只能用于以前由动态地址分配的函数。如果调用无效指针很可能毁坏内存管理机制,并且引起系统破坏的。

       free是调用操作系统的函数,将原先分配的内存区域释放。在操作系统中分配内存不是简单的给一个指针,而是在内核中维护每个程序的分配内存表,free则是用指针找到对应分配的表项然后释放。  

释放内存不是丢掉指针。否则的话后患无穷,就是内存泄漏。那么malloc到底做什么?free到底做什么?简单的说,malloc在一个特定的内存区划出一块你利用参数指定的大小的内存块,然后把这块内存的开始地址返回。这要求你用一个指针来接收。否则也会出现内存泄漏。因为这块内存你申请了之后,并没有释放。说到这里补充一句,malloc函数分配的内存空间不会自动释放,需要你操作来完成。需要的操作就是free。那么free做什么呢?就是将指针指定的内存空间释放,如果发现指定的内存空间不是在与malloc匹配的内存空间,free操作就会失败。所以free做的是释放指针指向的用malloc申请的特定的内存空间,而不是指针本身。

        结论:使用方法 对于用malloc分配空间的指针p, 使用过后要这样释放:

        free(p);

        p=NULL;