Home C&C++函数库 c++ 语法 程序源码 Linux C库

free

函数   <cstdlib>

void free (void* ptr);

释放内存块

释放之前调用callocmallocrealloc分配的内存块,使其可以再次用于分配。
如果ptr没有指向用上述函数分配的内存块,则会导致未定义的行为。

如果ptr是空指针,则函数不执行任何操作。

注意,这个函数并没有改变ptr本身的值(指向),因此它仍然指向原先的(free后无效的)位置。

☲  参数



ptr
指向先前用callocmallocrealloc分配的内存块的指针。

☉  返回值





☣  示例



/* free example */
#include <stdlib.h>     /* malloc, calloc, realloc, free */

int main ()
{
  int * buffer1, * buffer2, * buffer3;
  buffer1 = (int*) malloc (100*sizeof(int));
  buffer2 = (int*) calloc (100,sizeof(int));
  buffer3 = (int*) realloc (buffer2,500*sizeof(int));
  free (buffer1);
  free (buffer3);
  return 0;
}


这个程序没有输出。它只是演示了使用C标准库函数分配和释放动态内存的一些方法。

↭  数据竞争



调用只修改ptr引用的存储,不会访问其他存储位置。

如果函数释放了一个被分配函数(如callocmalloc>)调用重用的存储单元, 那么这些函数将以这样的方式同步,即在下一次分配之前完全重新分配。

❆  异常(c++)



无抛出保证:此函数从不抛出异常。

如果ptr没有指向之前用callocmallocrealloc分配的内存块,并且不是空指针,则会导致未定义的行为。

🍄  另请参阅



calloc 分配并且以零初始化数组(function)
malloc 分配内存块(function)
realloc 重新分配内存块(function)

联系我们 免责声明 关于CandCplus 网站地图