从理论上讲,我可以这么说
free(ptr);
free(ptr);
Run Code Online (Sandbox Code Playgroud)
是一个内存损坏,因为我们释放已经释放的内存.
但是如果
free(ptr);
ptr=NULL;
free(ptr);
Run Code Online (Sandbox Code Playgroud)
由于操作系统将以不确定的方式运行,我无法对此进行实际的理论分析.无论我在做什么,这种记忆是否会腐败?
释放空指针有效吗?
许多C代码释放指针调用:
if (p)
free(p);
Run Code Online (Sandbox Code Playgroud)
但为什么?我认为C标准说在free给定NULL指针的情况下函数不会做任何事情.那为什么要另外明确检查?