当前位置: 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 
/*函数free范例*/

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

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

    puts("Input the size of the string.");
    scanf("%d%c", &size, &temp);

    puts("Input the string.");
    /*分配内存。*/
    str = malloc(size*sizeof(char));
    if(str==NULL)
        exit(EXIT_FAILURE);

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

    puts(str);

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


结果:

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


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