社区
C++ 语言
帖子详情
关于C++指针。要不要手动删除?
liuchunshanyj
2011-02-23 10:58:54
今天在单位跑一个程序。 发现内存占用不断增加。 同事看了下说是调用一个函数里面有个指针内存泄漏。
要手动delete 一下。 果然好了。
但是平时用指针 也没有去删除呀 。好像没问题。
是不是在调用别的函数的时候用完指针要记得删除
而主函数不需要。C++ 会自动释放?
...全文
1010
31
打赏
收藏
关于C++指针。要不要手动删除?
今天在单位跑一个程序。 发现内存占用不断增加。 同事看了下说是调用一个函数里面有个指针内存泄漏。 要手动delete 一下。 果然好了。 但是平时用指针 也没有去删除呀 。好像没问题。 是不是在调用别的函数的时候用完指针要记得删除 而主函数不需要。C++ 会自动释放?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
300道
C++
题目
300道
C++
题目
C++
内存泄漏检测原理+代码
C++
内存泄漏检测原理的文档,包括代码,东东来自网络,我亲自整理,欢迎下载。
c++
有几种智能
指针
?对比说明
c++
有几种智能
指针
?对比说明
c++
通过对象的地址初始化
指针
,需要对
指针
进行释放么(企业链表衍生)
在
C++
中,如果你通过对象的地址来初始化
指针
,通常情况下是不需要
手动
释放
指针
的。这是因为对象的生存期与
指针
所指向的对象的生存期相关联。当对象超出其作用域或被销毁时,指向该对象的
指针
也会自动成为悬挂
指针
,这种情况下再访问该
指针
是不安全的。运算符来动态分配内存,并通过对象的地址初始化
指针
,那么你需要负责
手动
释放内存,以避免内存泄漏。来释放动态分配的对象,以防止内存泄漏。不过,最好的做法是使用智能
指针
(如。,因为它只是一个指向栈上对象的
指针
,对象的销毁由
C++
运行时自动处理。),以减少
手动
内存管理的错误和麻烦。
[20]
C++
智能
指针
C++
智能
指针
文章目录
C++
智能
指针
什么是智能
指针
?智能
指针
的特性智能
指针
都有哪些?如何创建智能
指针
对象智能
指针
类中的一些成员函数shared_ptrweak_ptrunique_ptr 什么是智能
指针
? 智能
指针
就是管理
指针
的模板类,被包含在memory头文件中,使用智能
指针
的时候必须包含这个头文件。 智能
指针
的特性 自动释放内存,不再需要程序员
手动
释放内存。 智能
指针
都有哪些? 智能
指针
在
C++
11之前有四个现在只有三个,auto_ptr已经被
删除
了。 剩下的三个智能
指针
分别是: shared_pt
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章