删除指针后将其设置为 NULL 的做法通常被认为是一种好的做法,但事实并非如此正如人们想象的那样普遍适用。
在 C 中,可以将指针设置为 NULL 以避免潜在的潜在风险两次删除导致的崩溃。当指针设置为 NULL 时,任何后续删除它的尝试都是无害的。这与删除已删除的指针相反,后者可能导致未定义的行为。
考虑以下示例:
Foo* foo = 0; // Sets the pointer to NULL delete foo; // Won't do anything
这里,指针最初设置为 NULL ,所以尝试删除它不会有任何效果。
但是,如果指针没有设置为NULL:
Foo* foo = new Foo(); delete foo; // Deletes the object delete foo; // Undefined behavior
第二次删除操作会导致未定义的行为,因为指针已经被删除并且它指向的内存已经被释放。
虽然删除后清空指针可以防止崩溃,它还可以掩盖双重删除错误,使它们得不到处理。最好完全避免双重删除错误,但实际上,这可能很困难。
智能指针通过自动管理内存来解决此问题,无需手动删除。但是,对于遗留代码或首选手动内存管理的特定场景,删除后将指针清空有助于防止崩溃,但应谨慎使用。
以上是删除后清空指针:预防措施还是潜在的陷阱?的详细内容。更多信息请关注PHP中文网其他相关文章!