当前位置: C语言 -- 标准库 -- <stdlib.h> -- free

free函数


概要:
#include <stdlib.h>
void free(void *ptr);

描述:

该函数释放参数ptr指向的内存;释放后内存管理函数可以进一步分配该处内存。

如果参数ptr是空指针,不发生任何操作。

如果参数ptr不能匹配先前内存管理函数返回的指针,或者如果参数ptr指向的内存已经被释放,函数行为是未定义的。


参数:
void *ptr

指向分配内存的指针。


返回值:

无


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
/*函数free范例*/

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

int main(void)
{
    char *str;
    int ch;
    int size;
    int i;

    puts("Input the size of the string.");
    scanf("%d", &size);
    
    /*清空输入缓冲区。*/
    while(((ch = getchar()) != '\n') && (ch != EOF))
        ;
    
    puts("Input the string.");
    /*分配内存。*/
    str = malloc(size*sizeof(char));
    if(str == NULL)
    {
        puts("Memory allocation failed.");
        exit(EXIT_FAILURE);
    }

    /*向分配的内存中写入内容。*/
    for(i=0;i<(size-1);++i)
    {
        ch = getchar();
        if((ch == '\n') || (ch == EOF))
        {
            break;
        }
        str[i] = ch;
    }
    str[i] = '\0';

    puts(str);

    /*释放内存。*/
    free(str);
    
    return 0;
}


结果:

该程序先分配一块内存,然后向其写入内容,最后输出内容并释放内存。


相关内容:
aligned_alloc 分配对齐方式和大小都指定的内存的函数。
calloc 给数组分配内存并将所有位都初始化为0的函数。
malloc 分配指定大小内存的函数。
realloc 重新分配内存的函数。
free_sized 释放内存的函数。
free_aligned_sized 释放内存的函数。


主要参考资料:

1、ISO/IEC 9899:2024

2、ISO/IEC 9899:2018