make_unique值是否初始化字符数组

does make_unique value initializes char array

本文关键字:初始化 字符 数组 是否 unique make      更新时间:2023-10-16

例如 -

#include <memory>
int main(){
    const auto bufSize = 1024;
    auto buffer = std::make_unique<char[]>(bufSize);
}

这里的缓冲区是否已经填充了''字符,或者我必须手动填充它以避免垃圾值。

有什么

可能的方法可以做到这一点,std::memset(&buffer.get(), 0, bufSize)足够吗?

如果未提供构造函数参数,则所有make_*函数都对类型使用值初始化。由于 make_unique 的数组形式不接受任何参数,因此它将清零元素。

是的,所有元素都将由 std::make_unique 初始化。

该函数等效于:

unique_ptr<T>(new typename std::remove_extent<T>::type[size]())

值初始化

这是构造变量时执行的初始化 带有空的初始值设定项。

语法

new T (); (2)

值初始化的效果包括:

3( 如果T是数组类型,则数组的每个元素都是 值初始化;
4( 否则,对象初始化为零。

然后对于每个类型为 char 的元素,它们将被值初始化(零初始化(为 ''

根据 cpp 偏好,是的:

2( 构造一个未知绑定 T 的数组。仅当 T 是未知边界数组时,此重载才参与重载解析。该函数等效于:

unique_ptr<T>(new typename std::remove_extent<T>::type[size]())
                                       value initialization ^

我指示的值初始化。