首页 相关文章 VC6.0中如何让new操作失败后抛出异常?

VC6.0中如何让new操作失败后抛出异常?

标准C++规定new一个对象时如果分配内存失败就应抛出一个std::bad_alloc异常,如果不希望抛出异常而仅仅传回一个NULL指针,可以用new的无异常版本:new(nothrow)。

  VC6.0在new头文件中声明了这两种operator new操作符:

void *__cdecl operator new(size_t) _THROW1(std::bad_alloc);
void *__cdecl operator new(size_t, const std::nothrow_t&) _THROW0();

  并分别定义在newop.cpp和newop2.cpp中。而_THROW0和_THROW1则是两个宏,在Include目录的xstddef文件中定义:

#define _THROW0() throw ()
#define _THROW1(x) throw (x)

  newop.cpp和newop2.cpp对应的目标模块被打包进标准C++库中。标准C++库有若干个版本: libcp.lib(单线程静态版)、libcpd.lib(单线程静态调试版)、libcpmt.lib(多线程静态版...[ 查看全文 ]

2016-02-19 标签:

VC6.0中如何让new操作失败后抛出异常?的相关文章

手机页面
收藏网站 回到头部