gpt4 book ai didi

c++ - operator new 负数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:07 30 4
gpt4 key购买 nike

在 C++11 中,如果我们尝试使用全局运算符 new 分配负大小的数组,它会抛出 std::bad_array_new_length,但是 C++98/C++03 呢?是 UB 还是会抛出 std::bad_alloc?

int main()
{
int* ptr = new int[-1];
}

最佳答案

如果大小为 C++03 标准的负数 5.3.4p6,则程序不正确:

Every constant-expression in a direct-new-declarator shall be an integral constant expression (5.19) and evaluate to a strictly positive value. The expression in a direct-new-declarator shall have integral or enumeration type (3.9.1) with a non-negative value.

上面的引用涵盖了 new T[a][b];,其中 b 是根据语法和 constant-expression a表达式(仅第一维)。

关于c++ - operator new 负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038860/

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