[英]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.