📅  最后修改于: 2023-12-03 15:25:41.515000             🧑  作者: Mango
悬空指针是指指向已经释放(或者不可用)内存的指针。这种指针也被称为“野指针”。
悬空指针可能会引起程序的崩溃或者产生不可预期的行为。因为悬空指针指向的内存可能已经被重新分配给其他变量,导致悬空指针操作这些变量的值,从而导致未定义行为甚至是程序崩溃。
下面是一个简单的例子:
int* p = new int;
delete p;
*p = 0; // 这里就是悬空指针
在这个例子中,指针 p
指向分配的整数内存。然后,使用 delete
将这个内存释放掉。最后,使用悬空指针 p
尝试修改这个内存,会导致未定义行为。
为了避免悬空指针,我们应该遵循以下原则:
nullptr
。nullptr
。下面是一个示例:
int* p = new int;
if (p != nullptr)
{
// 操作 p
}
delete p;
p = nullptr;
在这个示例中,我们首先检查指针 p
是否为 nullptr
。如果是,则不执行任何操作。然后,我们释放内存,并将指针设置为 nullptr
。这样,即使我们后面尝试使用悬空指针,程序也会崩溃,方便我们调试。