delete后不置空会出现野指针吗
时间: 2023-10-25 11:22:05 浏览: 114
在 C++ 中,delete 只是释放了指针指向的内存空间,并没有将指针本身置空,因此如果在 delete 之后没有将指针置为 nullptr,那么这个指针就会成为一个野指针。野指针指向的内存空间可能已经被释放,也可能被其他程序占用,因此使用野指针可能会导致程序崩溃或产生未定义的行为。
因此,建议在 delete 之后将指针置为 nullptr,可以避免使用野指针。例如:
```c++
int* p = new int;
// 使用 p
delete p;
p = nullptr; // 将指针置为 nullptr
```
相关问题
解释代码 delete m_dataMngr; m_dataMngr=nullptr; delete m_widget_login; m_widget_login=nullptr;
这段代码的作用是删除指针所指向的对象,并将指针置为空指针。具体来说,`delete m_dataMngr;`会调用`m_dataMngr`指针所指向对象的析构函数,并释放该对象所占用的内存空间。然后,`m_dataMngr=nullptr;`将`m_dataMngr`指针置为空指针,以防止出现野指针的问题。
同样地,`delete m_widget_login;`会调用`m_widget_login`指针所指向对象的析构函数,并释放该对象所占用的内存空间。而`m_widget_login=nullptr;`将`m_widget_login`指针置为空指针。
这样做是为了避免悬挂指针的问题,即在指针指向已经被释放的内存时仍然使用该指针。通过删除对象并将指针置为空指针,可以确保在后续使用指针时能够检测到其是否有效。
阅读全文