free_sized函数
概要:
#include <stdlib.h>
void free_sized(void *ptr, size_t size);
描述:
该函数释放参数ptr指向的内存;释放后内存管理函数可以进一步分配该处内存。
如果参数ptr是空指针,或者通过malloc、realloc或者calloc函数调用得到的结果,并且参数size等于内存分配时请求的分配大小,则该函数等价于free(ptr);否则该函数行为是未定义的。
aligned_alloc函数调用得到的结果不能传递给free_sized函数。
参数:
void *ptr
指向分配内存的指针。
size_t size
分配内存的大小。
返回值:
无
范例:
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_sized范例*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *str;
int ch;
size_t size;
size_t i;
puts("Input the size of the string.");
scanf("%zu", &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_sized(str, size*sizeof(char));
return 0;
}
|
可能结果:
该程序先分配一块内存,然后向其写入内容,最后输出内容并释放内存。
(注:编译时实现还未支持free_sized函数。)
相关内容:
主要参考资料:
1、ISO/IEC 9899:2024