理论上我可以这样说 free(ptr); free(ptr); 由于我们释放已经释放的内存,所以是内存损坏。 但是,如果 free(ptr); ptr=NULL; free(ptr); 由于操作系统的行为不确定,我无法对此进行实际的理论分析。 无论我在做什么,这个记忆腐败与否? 释放空指针是否有效?
在C中,在零 – NULL , NUL和0各种值之间似乎有差异。 我知道ASCII字符'0'计算结果是48或0x30 。 NULL指针通常定义为: #define NULL 0 要么 #define NULL (void *)0 另外,还有NUL字符'\0' ,它似乎也评估为0 。 有时候这三个值不可能相等吗? 这在64位系统上也是如此吗?