_set_new_mode

设置 mallocnew 处理程序模式。

语法

int _set_new_mode( int newhandlermode );

参数

newhandlermode
mallocnew 处理程序模式;有效值为 0 或 1。

返回值

返回为 malloc 设置的上一个处理程序模式。 返回值 1 表示,分配内存失败后,malloc 之前已调用 new 处理程序例程;返回值 0 表示未执行此操作。 如果 newhandlermode 参数不等于 0 或 1,则返回 –1。

备注

C++ _set_new_mode 函数将为 malloc 设置 new 处理程序模式。 new 处理程序模式指示 malloc 是否在失败时调用由 _set_new_handler 设置的 new 处理程序例程。 默认情况下,malloc 在失败时不调用 new 处理程序例程来分配内存。 可以替代此默认行为,以便在 malloc 无法分配内存时,malloc 可以调用 new 处理程序例程,方法与 new 运算符出于相同原因无法分配内存时所执行的操作一样。 有关详细信息,请参阅 C++ 语言参考 中的 newdelete 运算符。 若要重写默认值,请调用:

_set_new_mode(1);

在程序的早期进行调用,或链接到 Newmode.obj(请参阅链接选项)。

此函数验证其参数。 如果 newhandlermode 不为 0 或 1,此函数将调用无效参数处理程序,如参数验证中所述。 如果允许继续执行,_set_new_mode 返回 -1 并将 errno 设置为 EINVAL

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头
_set_new_mode <new.h>

有关兼容性的详细信息,请参阅 兼容性

另请参阅

内存分配
calloc
free
realloc
_query_new_handler
_query_new_mode