如果我根据 C++23 标准调用 `allocate_at_least(0)` 会发生什么?

问题描述 投票:0回答:1

here所示,

allocate(0)
的行为未指定。

那么,如果我按照 C++23 标准调用

allocate_at_least(0)
会发生什么呢?行为是实现定义的,还是会被视为
allocate(a_non_zero_value)

c++ language-lawyer dynamic-memory-allocation allocator c++23
1个回答
1
投票

[allocator.requirements.general]
指定(强调我的):

返回:

allocation_result<XX::pointer, XX::size_type>{ptr, count}
,其中 ptr 是为 count T 的数组分配的内存,创建了这样一个对象,但未构造数组元素,因此 count ≥ n。 如果 n == 0,则返回值未指定。

因此,就像

allocate(0)
一样,行为是未指定的。

© www.soinside.com 2019 - 2024. All rights reserved.