yqZhang4480 Asked: 2024-05-19 17:56:45 +0800 CST2024-05-19 17:56:45 +0800 CST 2024-05-19 17:56:45 +0800 CST 如果我根据 C++23 标准调用 `allocate_at_least(0)` 会发生什么? 772 如此处所示, 的行为allocate(0)未指定。 allocate_at_least(0)那么,如果我按照C++23标准调用会发生什么呢?行为是实现定义的,还是将被视为allocate(a_non_zero_value)? c++ 1 个回答 Voted Best Answer ChrisMM 2024-05-19T19:08:55+08:002024-05-19T19:08:55+08:00 [allocator.requirements.general]/44指定(强调我的): 返回:allocation_result<XX::pointer, XX::size_type>{ptr, count}其中 ptr 是为 count T 的数组分配的内存,并且创建了这样的对象但未构造数组元素,因此 count ≥ n。如果 n == 0,则返回值未指定。 因此,行为就像 一样allocate(0),是未指定的。
[allocator.requirements.general]/44
指定(强调我的):因此,行为就像 一样
allocate(0)
,是未指定的。