std::set_new_handler
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <new> 中定义
|
||
std::new_handler set_new_handler(std::new_handler new_p) |
||
使
new_p
新的全球新的处理函数,并返回以前安装的新的处理程序.原文:
Makes
new_p
the new global new-handler function and returns the previously installed new-handler.目录 |
[编辑] 注释
“新的处理程序”功能是调用的函数的内存分配尝试失败时,<div class="t-tr-text">分配的功能
。其目的是三件事情之一原文:
allocation functions
这段文字是通过 [http://translate.google.com Google Translate] 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
原文:
The new-handler function is the function called by
分配的功能</div> whenever a memory allocation attempt fails. Its intended purpose is one of three things:
原文:
allocation functions
这段文字是通过 [http://translate.google.com Google Translate] 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
您可以帮助我们检查、纠正翻译中的错误。详情请点击[http://en.cppreference.com/w/Cppreference:MachineTranslations 这里]。
使更多的内存可用
2) 终止程序(例如,通过调用std::terminate)
3) 原文:
terminate the program (e.g. by calling std::terminate)
抛出异常的类型std::bad_alloc或来自std::bad_alloc
原文:
throw exception of type std::bad_alloc or derived from std::bad_alloc
如果“新的处理程序”回报,分配函数重复先前分配失败的尝试,并调用新的“处理程序”,如果分配失败,再次。结束循环,新的处理程序“,可致电std::set_new_handler(nullptr):如果分配失败尝试后,发现,std::get_new_handler返回一个空指针值分配功能,它会抛出std::bad_alloc.
原文:
If new-handler returns, the allocation function repeats the previously-failed allocation attempt and calls the new-handler again if the allocation fails again. To end the loop, new-handler may call std::set_new_handler(nullptr): if, after a failed allocation attempt, allocation function finds that std::get_new_handler returns a null pointer value, it will throw std::bad_alloc.
在程序启动时,“新的处理程序”是一个空指针.
原文:
At program startup, new-handler is a null pointer.
[编辑] 参数
new_p | - | 的的类型std::new_handler,或空指针指向函数
原文: pointer to function of type std::new_handler, or null pointer |
[编辑] 返回值
以前安装的新的处理程序,或一个空指针,如果没有安装.
原文:
The previously-installed new handler, or a null pointer value if none was installed.
[编辑] 例外
[编辑] 示例
#include <iostream> #include <new> void handler() { std::cout << "Memory allocation failed, terminating\n"; std::set_new_handler(nullptr); } int main() { std::set_new_handler(handler); try { while(true) new int[100000000ul]; }catch(const std::bad_alloc& e) { std::cout << e.what() << '\n'; } }
输出:
Memory allocation failed, terminating std::bad_alloc
[编辑] 另请参阅
分配的功能 (函数) | |
set_new_handler |
注册一个新的处理程序 (函数) |
新的处理程序的函数指针类型 原文: function pointer type of the new handler (typedef) | |
内存分配失败时抛出的异常 原文: exception thrown when memory allocation fails (类) |