gpt4 book ai didi

c++ - C++ 中的错误分配异常

转载 作者:可可西里 更新时间:2023-11-01 15:45:57 25 4
gpt4 key购买 nike

在我的一个学校项目中,我被要求创建一个不使用 STL

的程序

在程序中,我用了很多

Pointer* = new Something;
if (Pointer == NULL) throw AllocationError();

我的问题是关于分配错误:

  1. 当分配失败时,new 是否会抛出自动异常
  2. 如果是这样,如果我不使用 STL (#include "exception.h") 如何捕获它?
  3. NULL 测试是否足够?

谢谢。
我在 Windows 7 上使用 eclipseCDT(C++)MinGW>

最佳答案

是的,如果无法分配内存,new 运算符会自动抛出异常。

除非您的编译器以某种方式禁用它,否则 new 运算符永远不会返回 NULL 指针。

它抛出一个 bad_alloc 异常。

还有一个 nothrow 版本的 new 可以使用:

int *p = new(nothrow) int(3);

如果无法分配内存,此版本将返回一个空指针。但还要注意,这并不能保证 100% nothrow,因为对象的构造函数仍然可以抛出异常。

更多信息:http://msdn.microsoft.com/en-us/library/stxdwfae(VS.71).aspx

关于c++ - C++ 中的错误分配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com