无论如何都要释放空指针或先检查?

she*_*lbc 6 c memory free pointers

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

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

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


tl;博士版,

在进行调用时,内部发生了什么free(),可能会在释放之前首先检查或指针是否为NULL,从而或多或少有效?

Thi*_*ame 9

C标准保证呼叫free(NULL)无害且无效.因此,除非您认为调用free()NULL指针表明您的程序中的其他位置存在逻辑错误,否则没有理由仔细检查.


Ker*_* SB 8

不要自己检查是否存在空值.free无论如何已经必须这样做,并保证在使用空指针调用时什么都不做.就那么简单.