gpt4 book ai didi

在 C 中调用 free() 会失败吗?

转载 作者:太空狗 更新时间:2023-10-29 16:24:45 26 4
gpt4 key购买 nike

调用 free() 是否会以任何方式失败?

例如:

free(NULL);

最佳答案

释放 NULL 指针不会失败。和 free不返回任何错误,但释放未分配的内存、已释放的内存或分配 block 的中间是未定义的行为 - 它可能导致内存错误并且程序可能中止(或者更糟的是,它会破坏堆结构并稍后崩溃).

或者,更糟糕的是,继续运行但完全损坏您的数据并在您没有​​意识到的情况下将其写入磁盘:-)

标准 (C99) 的相关部分是 7.20.3.2 节:

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

The free function causes the space pointed to by ptr to be deallocated, that is, made available for further allocation. If ptr is a null pointer, no action occurs. Otherwise, if the argument does not match a pointer earlier returned by the calloc, malloc, or realloc function, or if the space has been deallocated by a call to free or realloc, the behavior is undefined.

The free function returns no value.

关于在 C 中调用 free() 会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5308758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com