나는 shared_ptr을 몇 가지 이상한 행동을 발생하여 이런 이유를 설명 할 수 없다 :분할 오류 : shared_ptr의
class Selection : public Operator {
public:
Selection(std::shared_ptr<QueryQualification> qualificiation) : qualification(qualification) { }
...
private:
std::shared_ptr<QueryQualification> qualification;
};
: 세그먼트 오류가 발생합니다 선택의 생성자를
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);
...
}
을 그리고 여기에 여기서 move semantics를 사용하여 복사 동작을 향상시킬 수 있지만 먼저 실행 코드를 얻고 싶습니다.
위 코드 선택의 생성자 세그먼트 오류를 제기
SelectionOperator.hpp (라인 24)는 상기 선택 생성자의 코드 라인.
자격 개체가 Selection에 인수로 제공되기 전에 완벽하게 유효하므로 여기에서 무슨 일이 일어나고 있는지 이해하지 못합니다.
미리 감사드립니다.
이 시점에서 쿼리가 null입니까? – BlamKiwi
아니요, 쿼리가 유효합니다. std :: shared_ptr qualification = query-> getQualification();을 볼 수 있습니다. 그렇지 않으면 이미 세그먼트 화 오류가 발생합니다. –
moo
'query-> GetQualification()'은 무엇을 반환합니까? 'shared_ptr','unique_ptr', 당신이'delete'해야하는 소유 raw 포인터, 또는 소유하지 않은 raw 포인터? – Deduplicator