社区
C++ 语言
帖子详情
关于C++指针。要不要手动删除?
liuchunshanyj
2011-02-23 10:58:54
今天在单位跑一个程序。 发现内存占用不断增加。 同事看了下说是调用一个函数里面有个指针内存泄漏。
要手动delete 一下。 果然好了。
但是平时用指针 也没有去删除呀 。好像没问题。
是不是在调用别的函数的时候用完指针要记得删除
而主函数不需要。C++ 会自动释放?
...全文
1021
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++
有几种智能
指针
?对比说明
[20]
C++
智能
指针
C++
智能
指针
文章目录
C++
智能
指针
什么是智能
指针
?智能
指针
的特性智能
指针
都有哪些?如何创建智能
指针
对象智能
指针
类中的一些成员函数shared_ptrweak_ptrunique_ptr 什么是智能
指针
? 智能
指针
就是管理
指针
的模板类,被包含在memory头文件中,使用智能
指针
的时候必须包含这个头文件。 智能
指针
的特性 自动释放内存,不再需要程序员
手动
释放内存。 智能
指针
都有哪些? 智能
指针
在
C++
11之前有四个现在只有三个,auto_ptr已经被
删除
了。 剩下的三个智能
指针
分别是: shared_pt
C++
智能
指针
如何管理资源?有哪些智能
指针
类型?
不同的智能
指针
类型具有不同的特性和适用场景,我们应根据实际需求选择合适的智能
指针
类型。智能
指针
通过封装原始
指针
,并在适当的时候自动释放所指向的资源,从而实现对资源的自动管理。未来,随着
C++
语言的不断发展和完善,智能
指针
可能会引入更多的功能和特性,以满足更复杂的资源管理需求。我们应持续关注
C++
语言的发展动态,学习和掌握新的智能
指针
技术,以提高代码的质量和效率。通过深入理解和熟练运用智能
指针
,我们可以更好地管理资源,降低出错的风险,提高代码的可维护性和可读性。:不同的智能
指针
类型具有不同的语义和行为。
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章