1 前言
在C语言中,释放动态分配的内存是非常重要的,以避免内存泄漏和资源浪费。为此,可以使用 free()
函数来释放动态分配的内存。
铺垫理解:
-
内存的所有权:动态分配的内存块属于程序运行时的堆区,需要手动管理其生命周期。通过调用
free()
函数释放内存,告诉系统该内存不再使用,可以被回收和重用。 -
参数指针的重要性:
free()
函数的参数是一个指向动态分配内存起始位置的指针,即之前通过malloc()
、calloc()
、realloc()
等函数返回的指针。这是为了告诉系统要释放哪块内存。 -
释放后的指针设置为NULL:释放内存后,最好将指针设置为
NULL
,以避免出现悬空指针(dangling pointer)问题。这是一种指向已释放内存的指针,可能导致程序错误或崩溃。
2 free()函数
- 函数原型:void free(void* ptr);
- 参数:指向动态分配内存的指针
- 作用:是将之前通过
malloc()
、calloc()
、realloc()
等函数分配的内存块返回给系统,以便系统可以将该内存重新分配给其他部分使用。 - 返回值:无
下面是一些使用 malloc()
和 free()
函数的示例代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
int* ptr = (int*)malloc(sizeof(int)); // 动态分配内存
if (ptr == NULL) {
printf("内存分配失败\n");
return 1;
}
*ptr = 42; // 使用动态分配的内存
printf("动态分配的内存中的值:%d\n", *ptr);
free(ptr); // 释放内存
return 0;
}