C++ 释放指针

在C++中,释放指针通常使用delete或delete[]操作符;

如果指针指向的是单个对象,可以使用delete操作符进行释放;

在释放完内存后,最好将指针置为nullptr,以避免出现悬空指针(dangling pointer)问题;

cpp 复制代码
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)来管理动态分配的内存,以更好地避免内存泄漏和手动释放的麻烦;

相关推荐
天天代码码天天18 分钟前
C++ opencv RTSP小工具 RTSP流播放、每一帧保存
开发语言·c++·opencv
linux开发之路23 分钟前
C++ 音视频开发常见面试题及答案汇总
c++·ffmpeg·音视频·流媒体·音视频编解码
小扳29 分钟前
SpringBootWeb 篇-深入了解 ThreadLocal 存在内存泄漏问题
java·开发语言·spring boot·面试
CryptoPP36 分钟前
跨境金融数据对接实践:印度NSE/BSE股票行情API集成指南
开发语言·后端·金融
再睡一夏就好1 小时前
【C++闯关笔记】STL:list 的学习和使用
c语言·数据结构·c++·笔记·算法·学习笔记
要做朋鱼燕1 小时前
【C++】 list 容器模拟实现解析
开发语言·c++·笔记·职场和发展·list
Ka1Yan1 小时前
MySQL索引优化
开发语言·数据结构·数据库·mysql·算法
MediaTea2 小时前
Python 内置函数:pow()
开发语言·python
闻缺陷则喜何志丹2 小时前
【数论】P10580 [蓝桥杯 2024 国 A] gcd 与 lcm|普及+
c++·数学·蓝桥杯·数论·洛谷
上位机付工2 小时前
上位机通信速度有多快?
开发语言·c#·上位机·plc