为什么这段代码会抛出SEGV?我有一个域共享ptr的两个简单结构。我收到“SEGV在未知地址上”。
struct B;
struct A {
shared_ptr<B> p;
};
struct B {
shared_ptr<A> p;
};
int main() {
shared_ptr<A> p1;
shared_ptr<B> p2;
p2->p = p1; // falls here
return 0;
}
最佳答案
Why does this code throw SEGV?
因为默认初始化的共享指针指向null。您尝试通过此处的空指针访问不存在的对象:
p2->p = p1; // falls here
^
关于c++ - 我在shared_ptr中遇到问题。为什么这段代码会抛出SEGV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60114436/