C++在使用 delete
或 delete[]
后,指针本身不会变为 nullptr
,它仍然保留之前的值。这意味着指针仍然指向先前分配的内存地址,但是这块内存已经被释放。
为了避免悬挂指针(dangling pointers)的问题,建议在释放内存后将指针设置为 nullptr
,这样可以避免意外地访问已释放的内存。例如:
int* ptr = new int; // 使用ptr... delete ptr; ptr = nullptr; // 将指针设置为空
这样,如果后续再使用 ptr
,就会触发空指针异常,而不是访问已释放的内存造成未定义行为。同时,检查指针是否为空也是一种良好的编程习惯,可以帮助我们更好地追踪和排查问题。