C++ 如果中的新处理程序函数编写不正确或可能';t在c+中释放更多内存+;

C++ 如果中的新处理程序函数编写不正确或可能';t在c+中释放更多内存+;,c++,C++,编写良好的新处理程序函数应该是“如果无法释放更多内存,则通过异常或调用exit()终止程序” 如果新处理程序不是以这种方式编写的,会发生什么。函数的编写方式使其可以尝试释放内存。在这种情况下会发生什么。控件将返回到哪里 当新的处理程序释放内存时,谁来检查现在释放的内存是否足够大以处理新的请求。未定义的行为。C++并没有试图保护你自己。如果违反C++规则,任何事情都可能发生。 < P>“未定义行为”。C++并没有试图保护你自己。如果违反C++规则,任何事情都可能发生。 < P>“未定义行为”。C+

编写良好的新处理程序函数应该是“如果无法释放更多内存,则通过异常或调用exit()终止程序”

如果新处理程序不是以这种方式编写的,会发生什么。函数的编写方式使其可以尝试释放内存。在这种情况下会发生什么。控件将返回到哪里


当新的处理程序释放内存时,谁来检查现在释放的内存是否足够大以处理新的请求。

未定义的行为。C++并没有试图保护你自己。如果违反C++规则,任何事情都可能发生。

< P>“未定义行为”。C++并没有试图保护你自己。如果违反C++规则,任何事情都可能发生。

< P>“未定义行为”。C++并没有试图保护你自己。如果违反C++规则,任何事情都可能发生。

< P>“未定义行为”。C++并没有试图保护你自己。如果违反了C++规则,任何事情都可能发生。

如果你是指由设置的处理程序,那么如果处理程序返回和<代码>新< /COD>仍然不能分配内存,则处理程序将被再次调用,并且一次又一次地…< /P> < P>如果你是指由然后,如果处理程序返回并且
new
仍然无法分配内存,则处理程序将被再次调用,并且一次又一次…

如果您是指由设置的处理程序,那么如果处理程序返回并且
new
仍然无法分配内存,则处理程序将被再次调用,并且一次又一次…

如果您是指由设置的处理程序,然后,如果处理程序返回并且
new
仍然无法分配内存,则处理程序将被再次调用,并且一次又一次…

您可能正在寻找“C++分配器”您可能正在寻找“C++分配器”您可能正在寻找“C++分配器”谢谢您的快速响应。那么直到什么时候调用handler??我猜,直到它给新的记忆更多。现在,如果new有足够的内存来处理请求,它将分配内存。如果没有,会发生什么?因为我们已经覆盖了new的默认行为(通过bad_alloc exception)。@DeveshAgrawal只要处理程序返回并且
new
仍然无法分配所需的内存,就会调用该处理程序。如果处理程序不清除自身(即安装默认处理程序)、中止或以某种方式释放足够的内存,它将被永远调用。这很有趣。因此,程序将处于无限循环中。正确的??感谢您澄清疑问。感谢您的快速回复。那么直到什么时候调用handler??我猜,直到它给新的记忆更多。现在,如果new有足够的内存来处理请求,它将分配内存。如果没有,会发生什么?因为我们已经覆盖了new的默认行为(通过bad_alloc exception)。@DeveshAgrawal只要处理程序返回并且
new
仍然无法分配所需的内存,就会调用该处理程序。如果处理程序不清除自身(即安装默认处理程序)、中止或以某种方式释放足够的内存,它将被永远调用。这很有趣。因此,程序将处于无限循环中。正确的??感谢您澄清疑问。感谢您的快速回复。那么直到什么时候调用handler??我猜,直到它给新的记忆更多。现在,如果new有足够的内存来处理请求,它将分配内存。如果没有,会发生什么?因为我们已经覆盖了new的默认行为(通过bad_alloc exception)。@DeveshAgrawal只要处理程序返回并且
new
仍然无法分配所需的内存,就会调用该处理程序。如果处理程序不清除自身(即安装默认处理程序)、中止或以某种方式释放足够的内存,它将被永远调用。这很有趣。因此,程序将处于无限循环中。正确的??感谢您澄清疑问。感谢您的快速回复。那么直到什么时候调用handler??我猜,直到它给新的记忆更多。现在,如果new有足够的内存来处理请求,它将分配内存。如果没有,会发生什么?因为我们已经覆盖了new的默认行为(通过bad_alloc exception)。@DeveshAgrawal只要处理程序返回并且
new
仍然无法分配所需的内存,就会调用该处理程序。如果处理程序不清除自身(即安装默认处理程序)、中止或以某种方式释放足够的内存,它将被永远调用。这很有趣。因此,程序将处于无限循环中。正确的??谢谢你澄清了这个疑问。