C++ c++;堆内存分配/释放

C++ c++;堆内存分配/释放,c++,C++,如果我在堆上声明了像char*a=new char[1000]这样的东西,并且主程序停止了分配的内存,如果没有delete[]调用会发生什么?它仍然在堆上或自动释放? 至于C++,它会发生什么是完全不确定的。然而,几乎任何合理的操作系统都会在进程终止时清理进程分配的内存。但是,一个很好的做法是在自己之后进行清理。通常情况下,它会由操作系统进行清理。当应用程序崩溃或由于任何原因中止时,操作系统会在正常情况下回收内存。但是,这是未定义的。< /P> < P> C++标准在从代码>主()/代码>返回之

如果我在堆上声明了像
char*a=new char[1000]
这样的东西,并且主程序停止了分配的内存,如果没有
delete[]
调用会发生什么?它仍然在堆上或自动释放?

至于C++,它会发生什么是完全不确定的。然而,几乎任何合理的操作系统都会在进程终止时清理进程分配的内存。但是,一个很好的做法是在自己之后进行清理。

通常情况下,它会由操作系统进行清理。

当应用程序崩溃或由于任何原因中止时,操作系统会在正常情况下回收内存。但是,这是未定义的。< /P> < P> C++标准在从代码>主()/代码>返回之后不久指定“结束”-它确实解释了全局对象在此后的某个点被破坏,<代码> ATEXIT()/CODE >,并且一些其他“我们退出”级别函数也在<代码>主< /代码>返回之后运行。但是,C++程序没有指定程序所处的内存会发生什么。这同样适用于堆的内容


如果系统中有操作系统(C++也没有指定必须有操作系统),则由操作系统清除应用程序

一点术语:您可以声明和定义名称,比如这里的
A
。您可以在堆上分配对象。嗯,正式地说,是“免费商店”,但没有人这样称呼它。@PeteBecker的复制品:我可以在我的用户信息中引用“C++没有堆,所以我拒绝回答你的问题”这句话吗?