给出以下代码:
int *a = NULL;
a = calloc(1, sizeof(*a));
printf("%d\n", a);
a = realloc(a, 0);
printf("%d\n", a);
return (0);
它返回:
4078904
0
这个 realloc 相当于 free 吗?
笔记:
我在 Windows XP 下使用 MinGW。
它可能等同于也可能不等同于调用free
在指针上;结果是实现定义的。
来自 C99 标准 (§7.20.3/1):
如果请求的空间大小为零,则行为是实现定义的:返回空指针,或者行为就像大小是某个非零值,但返回的指针不得用于访问对象。
这适用于所有内存管理功能,包括realloc
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)