C++ 中关于new和delete使用的一些疑问

Q1.new和delete必须成对使用吗?Q2.如果使用了new,不使用delete会有什么后果?Q3.先看个例子:char*functiontest(){returnn... Q1.new 和 delete 必须成对使用吗?
Q2.如果使用了new,不使用delete会有什么后果?
Q3.先看个例子:
char* function test() {
return new char[10];
}
char *c = test();
delete c; // 这么做正确吗?如果不正确那正确的方法是什么?
Q4.如果我new了一块内存区域,没有delete,那么在程序结束的时候会自动帮我释放吗?
展开
 我来答
百度网友cd8541ae4
2013-07-12 · TA获得超过264个赞
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:113万
展开全部
A1. new和delete一般要成对使用。new开辟内存,delete删除内存。
A2.如果使用了new不delete程序会怎么样?这个要看你的程序。反正你要知道,new的内存如果不delete,该程序结束之前,这个内存不会释放掉。也就是说如果你的程序中常常new一些内存而不delete,你的程序占用的内存会不断增大。但是有一些全局数据,可以new了不delete,在程序开始运行时,创建这些数据,程序运行过程中使用这些数据,直到程序结束。
A3.写法错误。 如果new一个数组,必须使用delete[]符号。
A4.现代操作系统,程序结束后,会收回这个程序所占用的内存,也就是该程序占用的内存会全部得到释放。
吾守护奇迹
2013-07-12 · TA获得超过202个赞
知道小有建树答主
回答量:237
采纳率:66%
帮助的人:154万
展开全部
你好,
new 和delete必须成对使用,如果new了一块内存而不去delete这就是所谓的内存泄露
也学这样做当时是不会出现问题,但是假如你的程序需要长时间运行,并且不断的new分配 了内存却没有delete,可想而知,系统最后会因为内存耗尽而挂掉。
test函数内部分配了内存,那么必须明确调用函数时必须在函数外部对这块内存进行释放

所以你锁提供的这段程序是正确的。但是要写这样的函数,这么做是很危险的,但是这么做有时候也是无可避免的,因为如果别人来调用你的函数很可能就不会再外部调用delete了,所以一定要写好注释
最后一个问题,只要明确一点,一旦程序进程结束了,那么与此进程相关的一切资源都将销毁。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友27b8b4e
2013-07-12 · TA获得超过2381个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:374万
展开全部
1.对的
2.new出来的内存不会释放
3. 对的 但是最好改成delete[] c 但是不改也不会出错

4.会的 这是操作系统的任务
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式