在C語言中,free函數用于釋放之前使用malloc、calloc或realloc函數分配的內存空間。
其基本語法如下:
void free(void *ptr);
其中,ptr是一個指針,指向之前分配的堆內存空間。
使用free函數時,需要注意以下幾點:
以下是一個示例代碼,展示了free函數的使用:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*)malloc(sizeof(int)); // 分配一個int大小的堆內存空間
if (ptr == NULL) {
printf("內存分配失敗\n");
return 1;
}
*ptr = 10; // 向分配的內存空間存入數據
printf("ptr指針指向的值:%d\n", *ptr);
free(ptr); // 釋放內存空間
printf("釋放后ptr指針指向的值:%d\n", *ptr); // 注意:此時ptr指向的內存已經被釋放,訪問會產生未定義的行為
return 0;
}
在上述示例中,首先使用malloc函數分配了一個int大小的堆內存空間,并將其地址賦給ptr指針。然后,將10存入該內存空間,并打印該值。接著,使用free函數釋放了該內存空間。最后,由于已經釋放了內存空間,再次訪問ptr指針會產生未定義的行為。