new()没有delete()是未定义的行为或只是内存泄漏? [英] new() without delete() is Undefined Behavior or merely Memory Leak?

查看:425
本文介绍了new()没有delete()是未定义的行为或只是内存泄漏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

Possible Duplicate:
Are memory leaks “undefined behavior” class problem in C++?

不要调用 delete < new new []或 ] 在C ++程序中是一个未定义的行为或只是一个内存泄漏?

Never calling delete or delete[] on address returned by new or new [] resp in a C++ program is an Undefined Behavior or merely a memory leak?

欢迎来自标准的参考(如果有)。

这是在
在这里&我只是有点困惑。

References from the Standard(if any) are welcome.
This came up in one of the comments here & I am just a bit confused about it.

推荐答案

[basic.life](3.8 Object lifetime) / p>

[basic.life] (3.8 Object lifetime) in paragraph 4 tells :


程序可以通过重用对象占用的存储器或通过显式调用类的对象的析构函数来结束任何对象的生命周期类型与一个非平凡的析构函数。对于具有非平凡析构函数的类类型的对象,程序不需要在对象占用的存储被重新使用或释放​​之前明确地调用析构函数;但是,如果没有对析构函数的显式调用,或者如果没有使用delete-expression(5.3.5)来释放存储,那么析构函数不会被隐式调用,并且任何依赖于产生的边效应的程序由析构函数取消定义
行为。

这篇关于new()没有delete()是未定义的行为或只是内存泄漏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆