【C/C++ API】C++内存分配和释放函数分析-free

时间:2024-03-12 17:22:45

free 是 C 标准库中的一个函数,用于释放由 malloccallocreallocposix_memalign 等函数分配的动态内存。

其函数声明如下:

void free(void *ptr);

free 接受一个参数 ptr,即要释放的内存块的指针。该指针必须是之前调用上述分配函数返回的指针之一,或者是 NULL

调用 free(ptr) 会释放 ptr 指向的内存块,并使该内存块可用于后续的内存分配。在释放内存后,应该避免再次访问已经释放的内存,因为这样做可能导致未定义的行为或程序崩溃。

使用 free 的示例:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr;
    ptr = (int*)malloc(sizeof(int)); // 分配内存块
    if (ptr == NULL) {
        printf("内存分配失败\\n");
        return 1;
    }

    *ptr = 10; // 向内存块写入数据

    printf("ptr 指向的值为: %d\\n", *ptr);

    free(ptr); // 释放内存块

    return 0;
}

在上面的示例中,我们使用 malloc 分配了一个整数大小的内存块,并将其地址存储在 ptr 指针中。然后,我们向该内存块写入了一个整数值,并使用 printf 输出该值。最后,我们使用 free 释放了分配的内存块,以确保不再使用该内存块。