C++ 释放指针
2024-01-09 16:10:38
在C++中,释放指针通常使用delete或delete[]操作符;
如果指针指向的是单个对象,可以使用delete操作符进行释放;
在释放完内存后,最好将指针置为nullptr,以避免出现悬空指针(dangling pointer)问题;
void CShifangView::OnDraw(CDC* pDC)
{
CShifangDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str1;
int* ptr = new int; // 动态分配一个整型对象
*ptr = 9999;
str1.Format("0X%x", ptr);
pDC->TextOut(20, 20, str1);
delete ptr;
str1.Format("0X%x", ptr);
pDC->TextOut(20, 50, str1);
ptr = NULL;
str1.Format("0X%x", ptr);
pDC->TextOut(20, 80, str1);
}
?
delete ptr 之后ptr还是有值;ptr=NULL之后才是0;
如果指针指向的是数组,则需要使用delete[]操作符进行释放,
int* arr = new int[10];
......
delete[] arr; // 释放内存
arr = nullptr; // 将指针置为空,避免悬空指针问题
此外,在C++11之后,推荐使用智能指针(如std::shared_ptr、std::unique_ptr)来管理动态分配的内存,以更好地避免内存泄漏和手动释放的麻烦;
?
文章来源:https://blog.csdn.net/bcbobo21cn/article/details/135418426
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!