c++ - 我在shared_ptr中遇到问题。为什么这段代码会抛出SEGV?

标签 c++

为什么这段代码会抛出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/

相关文章:

c++ - 使用 money_get<> 解析 USD 和 $ 金额时出错

c++ - c++11后台运行线程

c++ - 我是否安全地删除了链表?

c++ - sscanf_s 在哪里?

java - c++ 11 相当于 java atomiclongarray

c++ - 在保持顺序的同时从 std::vector 中删除/删除重复元素的方法?

c++ - 如何解析这些未知大小的数据

c++ - qt 5中的信号槽问题

C++ 问题

c++ - 赋值运算符在派生类中不可用