函式
<cstdlib>

free

void free (void* ptr);
釋放記憶體塊
一個之前透過呼叫 malloccallocrealloc 分配的記憶體塊被釋放,使其可供後續分配使用。

如果 ptr 不指向上述函式分配的記憶體塊,則會導致未定義行為

如果 ptr 是一個空指標,該函式不執行任何操作。

請注意,此函式不會改變 ptr 本身的值,因此它仍然指向同一(現在無效的)位置。

引數

ptr
指向之前透過 malloccallocrealloc 分配的記憶體塊的指標。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
/* 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 stdlib 函式分配和釋放動態記憶體的一些方法。

資料競爭

只有 ptr 引用的儲存被修改。呼叫不訪問任何其他儲存位置。
如果該函式釋放的儲存單元被分配函式(如 callocmalloc)重新使用,則函式會同步進行,以便在下一次分配之前完全完成釋放。

異常 (C++)

無異常保證:此函式從不丟擲異常。

如果 ptr 不指向之前透過 malloccallocrealloc 分配的記憶體塊,也不是空指標,則會導致未定義行為

另見