Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
new的用途要求您同时调用delete吗? 我在这里用C++的一个问题来解决问题:_C++_Oop_New Operator_Delete Operator - Fatal编程技术网

new的用途要求您同时调用delete吗? 我在这里用C++的一个问题来解决问题:

new的用途要求您同时调用delete吗? 我在这里用C++的一个问题来解决问题:,c++,oop,new-operator,delete-operator,C++,Oop,New Operator,Delete Operator,“new的用途要求您同时调用delete?” 也许你有答案?因为这是C++设计的方式,也是预期的行为。 这样做的目的是提供一个您需要并拥有的内存分配,直到您明确地重新获取它 new为您提供了一个动态内存分配(在堆上),它将继续存在,并且您拥有它,直到您通过调用delete显式取消分配它 未能在新的ed缓冲区上调用删除,将导致未定义的行为,通常以以下形式出现。内存泄漏 这是讨论的。因为这是C++设计的方式,也是预期的行为。 这样做的目的是提供一个您需要并拥有的内存分配,直到您明确地重新获取它 ne

“new的用途要求您同时调用delete?”


也许你有答案?

因为这是C++设计的方式,也是预期的行为。 这样做的目的是提供一个您需要并拥有的内存分配,直到您明确地重新获取它

new
为您提供了一个动态内存分配(在堆上),它将继续存在,并且您拥有它,直到您通过调用
delete
显式取消分配它
未能在
新的
ed缓冲区上调用
删除
,将导致未定义的行为,通常以以下形式出现。内存泄漏


这是讨论的。

因为这是C++设计的方式,也是预期的行为。 这样做的目的是提供一个您需要并拥有的内存分配,直到您明确地重新获取它

new
为您提供了一个动态内存分配(在堆上),它将继续存在,并且您拥有它,直到您通过调用
delete
显式取消分配它
未能在
新的
ed缓冲区上调用
删除
,将导致未定义的行为,通常以以下形式出现。内存泄漏


这一点已经讨论过了。

当您执行
新操作时,操作系统会将内存分配给正在分配的指针。使用完成后,您可能不再需要它。但内存仍被操作系统标记为“正在使用”

现在,当指针在函数或任何其他块(of
{}
)的作用域中声明时,当块的执行结束时,它将被删除(只有指针将被删除)。在这种情况下,使用
new
分配的内存仍被OS标记为“正在使用”,并且不会分配给调用
new
的任何其他指针或变量。这会导致RAM中出现一个孤立的内存块,该内存块将永远不会被使用,因为它的指针已从内存中删除,但它将占用一个内存块

这称为内存泄漏。其中一些块也可能使应用程序不稳定


您可以使用
delete
来释放这些内存块并释放操作系统,以便它可以很好地用于其他请求

当您执行
新建
时,操作系统会将内存分配给您分配给它的指针。使用完成后,您可能不再需要它。但内存仍被操作系统标记为“正在使用”

现在,当指针在函数或任何其他块(of
{}
)的作用域中声明时,当块的执行结束时,它将被删除(只有指针将被删除)。在这种情况下,使用
new
分配的内存仍被OS标记为“正在使用”,并且不会分配给调用
new
的任何其他指针或变量。这会导致RAM中出现一个孤立的内存块,该内存块将永远不会被使用,因为它的指针已从内存中删除,但它将占用一个内存块

这称为内存泄漏。其中一些块也可能使应用程序不稳定


使用<代码>删除>代码>释放这些内存块,并解除OS,以便它可以很好地用于其他请求

C++中没有垃圾收集器,因此您负责分配分配的内存。无论如何,操作系统“知道”程序分配了什么内存。因此,当程序退出时,操作系统再次负责内存。但是如果你有一个长时间运行的C++程序,并且从不调用删除,NoOne将帮助你清除垃圾。

< P> C++中没有垃圾收集器,因此你负责分配分配的内存。无论如何,操作系统“知道”程序分配了什么内存。因此,当程序退出时,操作系统再次负责内存。但是如果你有一个长时间运行的C++程序,并且从不调用删除,NoOne将帮助你清除你的垃圾。< /P> < P>新的调用已经分配了对象的内存,它也安排了那个对象的构造函数。
您可以通过调用free()来释放内存,但实际上应该使用delete来释放new分配的内存,因为这也会导致执行objects析构函数。

调用new已经为该对象分配了内存,并且还安排了该对象的构造函数的执行


您可以通过调用free()来释放内存,但实际上应该使用delete来释放new分配的内存,因为这也会导致执行objects析构函数。

答案肯定也在您的书中。虽然有人可以(也将)在这里提供,但自己回答并不是那么困难。如果你已经这样做了,但需要确认,那么编辑问题并告诉我们你为什么认为它是。我在寻找它,它只是讨论问题。我认为你的意思是“为什么”,而不是“什么”。答案当然也会在你的书中。虽然有人可以(也将)在这里提供,但自己回答并不是那么困难。如果你已经这样做了,但需要确认,那么编辑问题并告诉我们为什么你认为它会。我在寻找它,它只是讨论问题。我认为你的意思是“为什么”,而不是“什么”。哦,好吧,我想这就是他们在寻找的,如果你不再次删除对象,内存泄漏的想法。这是不正确的。不调用
delete
没有未定义的行为,并且在某些情况下(例如,单例),您不想在
new
ed内存上调用
delete
。哦,好吧,我想这就是他们正在寻找的,如果不再次删除对象,内存泄漏的想法。这是不正确的。不调用
delete
没有未定义的行为,并且存在一些情况(例如,sin