一,new-handler的行为
1,STL的内存分配
STL容器所使用的内存是由容器所拥有的分配器对象管理,不是被new和delete直接管理。
2,理解new-handler的行为
当new无法满足用户的内存需求,在抛出一个错误之前,它会调用一个程序员指定的错误处理函数,就是所谓的new-handler。为了指定这个用以处理内存不足的函数,程序员必须调用set_new_handler,那是声明于<new>的一个标准程序库函数。
namespace std{
typedef void (*new_handler)();
new_handler set_new_handler(new_handler p) throw();
}
set_new_handler的参数是一个指针,指向new无法分配内存时被调用的函数。其返回值也是一个指针,指向set_new_handler被调用前正在执行的那个new_handler。当new无法满足内存要求时,它会不断调用new_handler函数,直到找到足够的内存。