关于_set_new_handler
2008-12-05 21:52
363 查看
关于_set_new_handler
_set_new_handler在MSDN中的声明是
_PNH _set_new_handler( _PNH pNewHandler );
_set_new_handler在MSDN中的说明是:Transfer control to your error-handling mechanism if the new operator fails to allocate memory.翻译过来就是:如果new操作符分配内存失败,则转向_set_new_handler所指定的错误处理机制中去处理。
_set_new_handler具有一个参数:_PNH pNewHandler,_PNH的声明是:
typedef int (__cdecl * _PNH)( size_t );
说明pNewHandler是一个指向某个函数入口的指针,该函数返回一个整型值。如果返回0,则表示告诉new操作符不要尝试去分配内存,返回非0,则表示告诉new操作符继续尝试分配内存。
_set_new_handler具有返回值,返回原先使用的newhandler函数的入口指针。
一个_set_new_handler的使用实例:
该实例可以预期预留一部分内存,当首次new操作符分配失败时,清空该部分内存,让new操作符重新分配,但当第二次分配失败时,则退出。
......
gpszTempMemory = new char[RESERVED_MEMORY_SIZE];
......
int ProcOutOfMemory(size_t size)
{
if(gpszTempMemory) // first time, we use our reservation
{
delete [] gpszTempMemory;
gpszTempMemory = NULL;
return 1;
}
else // second time, game over~~~
{
return 0;
}
}
......
_set_new_handler(ProcOutOfMemory);
......
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=292089
_set_new_handler在MSDN中的声明是
_PNH _set_new_handler( _PNH pNewHandler );
_set_new_handler在MSDN中的说明是:Transfer control to your error-handling mechanism if the new operator fails to allocate memory.翻译过来就是:如果new操作符分配内存失败,则转向_set_new_handler所指定的错误处理机制中去处理。
_set_new_handler具有一个参数:_PNH pNewHandler,_PNH的声明是:
typedef int (__cdecl * _PNH)( size_t );
说明pNewHandler是一个指向某个函数入口的指针,该函数返回一个整型值。如果返回0,则表示告诉new操作符不要尝试去分配内存,返回非0,则表示告诉new操作符继续尝试分配内存。
_set_new_handler具有返回值,返回原先使用的newhandler函数的入口指针。
一个_set_new_handler的使用实例:
该实例可以预期预留一部分内存,当首次new操作符分配失败时,清空该部分内存,让new操作符重新分配,但当第二次分配失败时,则退出。
......
gpszTempMemory = new char[RESERVED_MEMORY_SIZE];
......
int ProcOutOfMemory(size_t size)
{
if(gpszTempMemory) // first time, we use our reservation
{
delete [] gpszTempMemory;
gpszTempMemory = NULL;
return 1;
}
else // second time, game over~~~
{
return 0;
}
}
......
_set_new_handler(ProcOutOfMemory);
......
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=292089
相关文章推荐
- 关于_set_new_handler
- 关于set_new_handler(转载)
- 关于set_new_handler(转载)
- 关于set_new_handler
- 关于set_new_handler(转载)
- 关于 set_new_handler的总结
- 关于set_new_handler(转载)
- 关于set_new_handler
- 关于在vc6.0中使用set_new_handler的问题
- 关于set_new_handler
- 关于 set_new_handler的总结
- 关于set_new_handler
- 关于set_new_handler(转载)
- 学习中遇到的问题-关于set_new_handler()
- 《STL源码剖析》中关于set_new_handler的理解
- set_new_handler用法
- Set_New_Handler()
- new_handler & set_new_handler
- c++中的set_new_handler和new_handler
- 【译】set_new_handler