free()函数的用法
2012-08-02 17:25
197 查看
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;
free是调用操作系统的函数,将原先分配的内存区域释放。在操作系统中分配内存不是简单的给一个指针,而是在内核中维护每个程序的分配内存表,free则是用指针找到对应分配的表项然后释放。
释放内存不是丢掉指针。否则的话后患无穷,就是内存泄漏。那么malloc到底做什么?free到底做什么?简单的说,malloc在一个特定的内存区划出一块你利用参数指定的大小的内存块,然后把这块内存的开始地址返回。这要求你用一个指针来接收。否则也会出现内存泄漏。因为这块内存你申请了之后,并没有释放。说到这里补充一句,malloc函数分配的内存空间不会自动释放,需要你操作来完成。需要的操作就是free。那么free做什么呢?就是将指针指定的内存空间释放,如果发现指定的内存空间不是在与malloc匹配的内存空间,free操作就会失败。所以free做的是释放指针指向的用malloc申请的特定的内存空间,而不是指针本身。
结论:使用方法 对于用malloc分配空间的指针p, 使用过后要这样释放:
free(p);
p=NULL;
相关文章推荐
- free函数用法小结
- windows GDI调色板是否存在内存泄露 之鉴 free函数用法
- malloc 和free()函数的用法:
- 关于 free() 函数用法的若干疑问
- malloc与free函数用法
- 缓冲函数ob_get_contents() ob_end_clean() ob_start()的用法
- 函数参数用法笔记
- qsort函数用法
- php curl_init函数用法
- C语言中基本的输入和输出函数的用法第一讲(C语言学习随笔三)
- string类成员函数find/find_first_of用法详解
- 详细记录python的range()函数用法
- 5章1节函数的声明定义用法
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- assert()函数用法总结
- cin.ignore()函数的用法
- sscanf函数用法详解
- C++ fill()和fill_n()函数用法
- PHP curl_setopt函数用法介绍
- SQL 函数的用法