c - 无论如何释放空指针或先检查?

标签 c pointers memory free

假设我在一个程序中遇到一个实例,我将释放一个 NULL 指针,或者首先检查它是否为 NULL 并跳过 free() 函数调用。

简单地释放一个 NULL 指针会更有效吗?我搜索了一下,显然,对于 C89 之后的实现,释放 NULL 指针是无害的 - 所以决定归结为效率。

我的假设是调用 free() 时可能会产生相当多的开销。因此,在调用 free() 函数之前进行简单的逻辑检查可能是非常必要的。


tl;dr 版本,

当调用 free() 时内部发生了什么,这可能会或多或少地在释放前先检查指针是否为 NULL 的效率?

最佳答案

C 标准保证调用 free(NULL) 是无害的并且没有任何效果。因此,除非您认为在 NULL 指针上调用 free() 表明您在程序的其他地方遇到了逻辑错误,否则没有理由仔细检查。

关于c - 无论如何释放空指针或先检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18775608/

相关文章:

无法确定神秘段错误的原因

c - C 中的不可变结构值

c++ - 将指针转换为char指针以进行算术运算是否安全又可移植?

C 程序 : Update unsigned char pointer array with function

java - 不断增加的 CPU 负载从何而来?

c - 程序未收到所需的输入

c - fscanf时如何忽略文件中的 ';'?

c++ - 指向存储在结构中的数组的指针在哪里?

c++ - Linux 如何知道进程使用了​​多少物理内存?

c++ - boost::interprocess : Allocating Shared Memory within a loop