c++ 什么变量需要手动释放内存,什么变量 不需要手动释放

 我来答
seamaswong
2011-06-14 · TA获得超过1122个赞
知道小有建树答主
回答量:483
采纳率:0%
帮助的人:375万
展开全部
使用 new 操作符获取的内存需要手动释放 delete
比如有class A
A a;
A* p1=&a;
A* p2=new A();
上例中,p1,p2都是指向A的指针,但是p1指向的a不是new出来的,就不用delete,会自动释放
p2指向的是new出来的,需要手动释放,如果在没有释放p2的情况下就将p2指向改变

// delete p2;
p2=p1;
就会造成内存泄漏,应该在之前加上delete p2;
追问
char * a="ssss"
字符串呢
追答
不需要手动释放,只要记住需要手动释放的内存,必然是用new操作符或者malloc函数之类动态分配的内存
copylegend
推荐于2018-05-10 · TA获得超过345个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:209万
展开全部
动态申请的内存需要手动释放
比如 malloc对应free new对应delete
追问
char * a="ssss"
这样的呢
追答
这样说不用的,因为"ssss"这个串已经在常量区中开辟了,指针a指向了这块内存的首地址
这块内存在程序结束后会自动回收
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友97a3a82
2011-06-14
知道答主
回答量:28
采纳率:0%
帮助的人:15.7万
展开全部
补充一下,写小型程序时,不释放new (malloc)申请的内存也不会出错,所以我们容易范这样的错误,如果是大型程序不释放的话,在运行的过程中就会出现查不原因的错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hyz823629881
2011-06-18
知道答主
回答量:55
采纳率:0%
帮助的人:31.1万
展开全部
栈里面变量不需要手动释放。堆里面的分情况。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式