社区
C++ 语言
帖子详情
关于C++指针。要不要手动删除?
liuchunshanyj
2011-02-23 10:58:54
今天在单位跑一个程序。 发现内存占用不断增加。 同事看了下说是调用一个函数里面有个指针内存泄漏。
要手动delete 一下。 果然好了。
但是平时用指针 也没有去删除呀 。好像没问题。
是不是在调用别的函数的时候用完指针要记得删除
而主函数不需要。C++ 会自动释放?
...全文
943
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)
关于c++ 智能
指针
及 循环引用的问题
由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete,比如流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见,并造成内存泄露。如此c++引入 智能...
零起点学通C++多媒体范例教学代码
8.3.3 用
指针
删除
堆中空间 8.4 动态内存 8.4.1 内存泄漏 8.4.2 在堆中创建对象 8.4.3 在堆中
删除
对象 8.4.4 访问堆中的数据成员 8.4..5 在构造函数中开辟内存空间 8.4.6 对象在栈与堆中的不同 8.5 this
指针
8.6
指针
...
2小时精通C++智能
指针
本课程讲解C++11标准库中的智能
指针
。对于C/C++程序员来说,
指针
是天堂,也是地狱。
指针
用得好程序运行效率倍增,用得不好问题层出不穷。智能
指针
可以解决普通
指针
存在的悬垂
指针
、野
指针
、资源泄露等问题本教程的主要的演示平台为Qt 4.11和g++ 7.4。学员也可以使用Visual Studio 2017。教程中从最简单的例子入手,覆盖智能
指针
的常用技术点,并穿插实例程序。本篇讲解的技术点包括:共享
指针
、弱
指针
、唯一
指针
、自动
指针
等。本课程中涉及的所有软件和示例源码,均提供免费下载。
C++实现简单单向链表
为了练习一下对链表的理解,尝试手动造轮子,实现单向链表的右添加,左添加和
删除
的功能。 头文件 #pragma once #include using namespace std; struct Node//节点 { int value; Node* next; Node(int a = 0, ...
[20] C++智能
指针
C++智能
指针
文章目录C++智能
指针
什么是智能
指针
?智能
指针
的特性智能
指针
都有哪些?如何创建智能
指针
对象...智能
指针
在C++11之前有四个现在只有三个,auto_ptr已经被
删除
了。 剩下的三个智能
指针
分别是: shared_pt
C++ 语言
64,684
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章