【发布时间】:2021-05-04 04:10:44
【问题描述】:
我可以在没有默认初始化的情况下初始化数组的 std::unique_ptr 吗(我只想让它有虚拟值)
我正在尝试使用数组的 unique_ptr 来防止内存泄漏。
但它看起来总是用 0 初始化值(看“movups XMMWORD PTR [rax+48], xmm0”)
我不需要这个。我只希望 vector2 具有虚拟值。
我可以这样做吗?
#include <memory>
struct Vector2
{
float x, y;
};
struct A
{
std::unique_ptr<Vector2[]> vector2;
};
int main()
{
A a;
a.vector2 = std::make_unique<Vector2[]>(10);
}
sub rsp, 40 ; 00000028H
mov QWORD PTR a$[rsp], 0
mov ecx, 80 ; 00000050H
call void * operator new[](unsigned __int64) ; operator new[]
test rax, rax
je SHORT $LN15@main
xorps xmm0, xmm0
movups XMMWORD PTR [rax], xmm0
movups XMMWORD PTR [rax+16], xmm0
movups XMMWORD PTR [rax+32], xmm0
movups XMMWORD PTR [rax+48], xmm0
movups XMMWORD PTR [rax+64], xmm0
【问题讨论】:
标签: c++ initialization c++17 c++14 unique-ptr