繁体   English   中英

细分错误:shared_ptr

[英]Segmentation fault: shared_ptr

我在shared_ptr上遇到了一些奇怪的行为,无法解释为什么会这样:

std::shared_ptr<QueryQualification> qualification = query->getQualification();
if (qualification != nullptr) {
    // add selection
    std::shared_ptr<Operator> selection = std::shared_ptr<Operator>(new Selection(qualification));
    selection->setLeftChild(scan);
    ...
}

这是造成分段错误的Selection的构造函数:

class Selection : public Operator {
public:
   Selection(std::shared_ptr<QueryQualification> qualificiation) : qualification(qualification) { }
...
private:
   std::shared_ptr<QueryQualification> qualification;
};

我知道,我可以在这里通过移动语义来改善复制行为,但是我想首先获得一些正在运行的代码。

上面的代码在Selection的构造函数中引发了分段错误: 错误的回溯

SelectionOperator.hpp(第24行)是上面Selection构造函数的代码行。

我真的不明白这里发生了什么,因为资格对象在将其提供给Selection作为参数之前是完全有效的。

提前致谢!

class Selection : public Operator {
public:
   Selection(std::shared_ptr<QueryQualification> qualification) : m_qualification(qualification) { }
...
private:
   std::shared_ptr<QueryQualification> m_qualification;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM