nothrow是在C++标准头文件<new>中定义的一个nothrow_t类的对象。nothrow_t类是这样定义的: struct nothrow_t { }; 可见它只是一个什么都不做的空类。new仅仅使用这个空类对象达到一种标识作用,而不是利用这个类对象的功能。通常称这样的类对象为占位符。 C++标准规定 new 在分配内存失败的时候会抛出异常,因此在C++程序中应该通过捕捉异常来处理内存失败的情况。与之不同,传统的C语言中的malloc()函数分配内存失败时返回NULL指针。为了提供与malloc()函数一致的行为,即在内存分配失败时返回一个NULL指针,而不是抛出异常,C++还提供了 nothrow(不抛出异常) 版本的 new,即 new(nothrow)。利用 new(nothrow),可以通过判断其返回的指针值是否为NULL从而判断内存分配是否成功。
nothrow
最新推荐文章于 2024-05-07 15:42:05 发布