社区
C++ 语言
帖子详情
关于C++指针。要不要手动删除?
liuchunshanyj
2011-02-23 10:58:54
今天在单位跑一个程序。 发现内存占用不断增加。 同事看了下说是调用一个函数里面有个指针内存泄漏。
要手动delete 一下。 果然好了。
但是平时用指针 也没有去删除呀 。好像没问题。
是不是在调用别的函数的时候用完指针要记得删除
而主函数不需要。C++ 会自动释放?
...全文
1090
31
打赏
收藏
关于C++指针。要不要手动删除?
今天在单位跑一个程序。 发现内存占用不断增加。 同事看了下说是调用一个函数里面有个指针内存泄漏。 要手动delete 一下。 果然好了。 但是平时用指针 也没有去删除呀 。好像没问题。 是不是在调用别的函数的时候用完指针要记得删除 而主函数不需要。C++ 会自动释放?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
浅行
2011-02-24
打赏
举报
回复
以前你的运行正常,可能是需要的空间小,还没到完蛋的地步
程序运行正常,并不说明你的程序一定是健康的,保持良好的编程习惯可减少此类bug
xiaozhuhaoa
2011-02-24
打赏
举报
回复
new分配的都需要要delete
direction917
2011-02-24
打赏
举报
回复
new 出来的是堆的,要删。
至于只能指针,学习了
modaoshi3002
2011-02-24
打赏
举报
回复
new出来的内存,必须delete,这也是一个编程的好习惯。
但实际上这样做还是不安全的,
比如你new出来之后,在delete之前,发生了异常,那么delete就运行不到。
解决办法是如楼上各位所说,使用智能指针,
它在构造时获取指针,在析构函数中保证了delete指针。
stl中有auto_ptr, 但因为无法复制等问题,已经过时了,
现在一般使用boost::shared_ptr,
这是最强的智能指针,已经进入了最新的标准库
也可以如下方式使用:
std::tr1::shared_ptr
mstlq
2011-02-24
打赏
举报
回复
[Quote=引用 7 楼 boyhailong 的回复:]
引用 6 楼 fanlehai 的回复:
new delete 是配对使用的,如果实在不想的话,用auto_ptr吧
auto_pt是boost的玩意?
[/Quote]
stl就有
chengzhe
2011-02-24
打赏
举报
回复
贴代码
mtj530
2011-02-24
打赏
举报
回复
[Quote=引用 17 楼 mymugua 的回复:]
new了就delete,单纯的定义一个指针是不需要的
[/Quote]
单纯的最后面没用了的话赋值为NULL.
myMugua
2011-02-24
打赏
举报
回复
new了就delete,单纯的定义一个指针是不需要的
食财物权情性
2011-02-24
打赏
举报
回复
auto_ptr就是c++的
还是用boost的shared_ptr吧
xengine-qyt
2011-02-24
打赏
举报
回复
申请了空间才需要释放,没申请就不需要。
程序关闭后系统才会自动给你回收垃圾资源!
pstrunner
2011-02-24
打赏
举报
回复
主函数退出时,自然也就被OS回收内存啦,而不是C++自动释放的。
[Quote=引用楼主 liuchunshanyj 的回复:]
今天在单位跑一个程序。 发现内存占用不断增加。 同事看了下说是调用一个函数里面有个指针内存泄漏。
要手动delete 一下。 果然好了。
但是平时用指针 也没有去删除呀 。好像没问题。
是不是在调用别的函数的时候用完指针要记得删除
而主函数不需要。C++ 会自动释放?
[/Quote]
GARY
2011-02-24
打赏
举报
回复
动态申请(new)的要手动delete
int *pi = new int;
// use pi
delete pi;
7楼:
auto_pt是boost的玩意?
auto_ptr就是c++标准库的内容吧。
TimZhuFaith
2011-02-24
打赏
举报
回复
[Quote=引用 7 楼 boyhailong 的回复:]
引用 6 楼 fanlehai 的回复:
new delete 是配对使用的,如果实在不想的话,用auto_ptr吧
auto_pt是boost的玩意?
[/Quote]
是吗
欣客
2011-02-24
打赏
举报
回复
如果使用了new 就要配套delete .
ydqqk177
2011-02-24
打赏
举报
回复
[Quote=引用 6 楼 fanlehai 的回复:]
new delete 是配对使用的,如果实在不想的话,用auto_ptr吧
[/Quote]
auto_ptr似乎已被新标准贬斥
推荐shared_ptr
yhwxxx
2011-02-24
打赏
举报
回复
[Quote=引用 8 楼 defonds 的回复:]
配对使用比较稳当
[/Quote]
一定要配对使用,提前返回的情况更要注意
Defonds
2011-02-24
打赏
举报
回复
配对使用比较稳当
xiaolomg
2011-02-24
打赏
举报
回复
[Quote=引用 6 楼 fanlehai 的回复:]
new delete 是配对使用的,如果实在不想的话,用auto_ptr吧
[/Quote]
auto_pt是boost的玩意?
Learn-anything
2011-02-24
打赏
举报
回复
new delete 是配对使用的,如果实在不想的话,用auto_ptr吧
June_Xiao
2011-02-24
打赏
举报
回复
可以使用SmartPtr
加载更多回复(11)
unique_ptr 智能
指针
详解
本文详细介绍了
C++
标准库中的unique_ptr智能
指针
。它用于管理动态分配资源,拥有独占所有权,可通过移动语义等方式转移所有权。同时强调
不要
手动
用delete释放资源,避免裸
指针
和release滥用,还能自定义
删除
器,实现灵活的资源管理,避免资源泄漏等问题。
深入掌握
C++
智能
指针
本文深入介绍
C++
智能
指针
,阐述其能解决裸
指针
资源泄露等问题。介绍了不带引用计数的auto_ptr、scoped_ptr、unique_ptr,以及带引用计数的shared_ptr、weak_ptr。还探讨了智能
指针
的交叉引用、多线程访问共享对象问题的解决办法,最后提及自定义
删除
器。
【
C++
】智能
指针
详解
本文围绕
C++
智能
指针
展开,介绍其能自动管理内存,减少内存泄漏风险。阐述了使用智能
指针
的原因,详细分析了auto_ptr、unique_ptr、shared_ptr和weak_ptr的特点及实现,还说明了weak_ptr可解决shared_ptr的循环引用问题。此外,提及智能
指针
的
删除
器,包括定制方式和不同版本。
安全地管理
C++
中的内存 ——
删除
null
指针
的考量与实践
本文探讨了在
C++
中,为何
删除
null
指针
是安全的,以及如何在异常处理中利用这一特性。通过实例展示了智能
指针
如何简化内存管理,并提倡在实践中优先使用智能
指针
以增强代码健壮性和安全性。
C++
map
删除
所有元素
指针
泄露内存
C++
中的map在使用.clear()函数清空时,若值为
指针
,可能导致内存泄漏。为避免内存泄漏,需要通过迭代器逐个
删除
并释放
指针
所指向的对象。迭代器在
删除
元素后必须先递增再
删除
,以防止迭代器失效。如果值不是
指针
,直接使用.clear()即可。此外,使用智能
指针
可以自动管理内存,避免
手动
delete。
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章