理论上我可以说
free(ptr);
free(ptr);
这是内存损坏,因为我们要释放已经释放的内存。
但是如果
free(ptr);
ptr=NULL;
free(ptr);
由于操作系统将以不确定的方式运行,因此我无法对此进行实际的理论分析。无论我在做什么,这是不是内存损坏?
释放NULL指针是否有效?
delete NULL
在C ++中无效。delete可以应用于具体类型的空指针值,但不能应用于NULL
。delete (int*) NULL
是合法的,但不是delete NULL
。
ptr
指向内存,而您没有调用free
它,则内存将泄漏。将其设置为NULL
只会失去对内存的处理能力并泄漏。如果ptr
碰巧是NULL
,则调用free
为空操作。
free(ptr)
使用ptr = NULL
。没有人这么说。