【发布时间】:2022-01-11 17:56:42
【问题描述】:
从 C 标准中可以清楚地看出,NULL 是free() 的可接受输入,结果是不执行任何操作。但是,这似乎违反了 free() 只能在使用 malloc()、calloc() 或 realloc() 显式分配的内存上调用的想法。
这个异常背后的原因是什么?我能想到的唯一原因是,调用者不必在调用free() 之前明确检查NULL。
【问题讨论】:
-
NULL是来自malloc和朋友的有效返回值。所以任何构造free(malloc(...))都是有效的。 -
很难回答有关编程语言推理的问题。 not 允许
free(NULL)有什么好处?在这种情况下您会遇到什么错误?