gpt4 book ai didi

c++ - union 中的 Shared_ptr

转载 作者:可可西里 更新时间:2023-11-01 18:19:49 29 4
gpt4 key购买 nike

我想访问 union 的共享指针,尽管发生段错误:

struct union_tmp
{
union_tmp()
{}
~union_tmp()
{}
union
{
int a;
std::shared_ptr<std::vector<int>> ptr;
};
};

int main()
{
union_tmp b;
std::shared_ptr<std::vector<int>> tmp(new std::vector<int>);
b.ptr = tmp; //here segmentation fault happens
return 0;
}

错误的原因是什么,我该如何避免?

最佳答案

您需要在 union 体中初始化std::shared_ptr:

union_tmp()
: ptr{} // <--
{}

否则,ptr 保持未初始化状态,调用其赋值运算符会触发未定义的行为。

关于c++ - union 中的 Shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302010/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com