AN
Size: a a a
AN
AT
IZ
V
АК
struct bar { std::unique_ptr<int> value; };
boost::asio::awaitable<void> f(bar by_value) { co_return; }
// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free
Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr
. При этом:bar
сделать локальной переменной, а только потом мувнуть в f
- всё будет ок. std::string
вместо std::unique_ptr
.DF
DF
АК
struct bar { std::unique_ptr<int> value; };
boost::asio::awaitable<void> f(bar by_value) { co_return; }
// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free
Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr
. При этом:bar
сделать локальной переменной, а только потом мувнуть в f
- всё будет ок. std::string
вместо std::unique_ptr
.bar temp{ .value = std::make_unique<int>(5);
auto result = f(copy_not_move(temp));
// здесь вызывается деструктор temp, который был ранее побитово скопирован (!) в f
АК
EP
struct bar { std::unique_ptr<int> value; };
boost::asio::awaitable<void> f(bar by_value) { co_return; }
// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free
Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr
. При этом:bar
сделать локальной переменной, а только потом мувнуть в f
- всё будет ок. std::string
вместо std::unique_ptr
.АК
d
struct bar { std::unique_ptr<int> value; };
boost::asio::awaitable<void> f(bar by_value) { co_return; }
// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free
Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr
. При этом:bar
сделать локальной переменной, а только потом мувнуть в f
- всё будет ок. std::string
вместо std::unique_ptr
.d
struct bar { std::unique_ptr<int> value; };
boost::asio::awaitable<void> f(bar by_value) { co_return; }
// где-то далее
co_await f(bar{ std::make_unique<int>(5) }); // double free
Баг в коде или в компиляторе? Использую gcc-10.2, получаю double free в деструкторе unique_ptr
. При этом:bar
сделать локальной переменной, а только потом мувнуть в f
- всё будет ок. std::string
вместо std::unique_ptr
.АК
d
j
d