簡體   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