std::vectors
및 std::maps
을 std::shared_ptrs
으로 만들려고하지만 데이터를 잃는 습관이있는 것 같습니다. 즉, std::shared_ptrs
을 입력하면 그 중 일부는 해당 데이터를 삭제합니다.벡터 std :: shared_ptr 데이터 손실
특히 std::vector
에 푸시 될 첫 번째 std::shared_ptr
이 삭제됩니다. 원래 std::shared_ptr
이 범위를 벗어날 때까지 을 std::vector
으로 밀어 넣으면 참조 카운트를 증가시켜야하므로 혼란 스럽습니다. 맞습니까? 어떤 다른 std::shared_ptrs
도 삭제 된 것 같지 않지만이 문제가 해결 될 때까지는 반복을 통해 값을 검사 할 때까지 확인할 수 없습니다.
내가 충분히 자신을 설명하지 않은 경우 사과드립니다. 나는이 사이트에 여전히 적응 중이다.
편집 : Here은 두 가지 관련 클래스의 코드입니다. 문제는로드 멤버 함수에 있어야합니다. 파일 파서이기 때문에 크기가 커서 문제가있는 곳을 알 수는 없습니다. 값은 List의 경우 std::vector<std::shared_ptr<NBT::Tag::Base>>
이고 Compound의 경우 std::map<std::string, std::shared_ptr<NBT::Tag::Base>>
인 멤버 변수입니다.
코드 샘플을 게시 할 수 있습니까? 내가 boost :: shared_ptr로 묘사 한 것을 모방하려했으나 올바르게 동작하는 것 같다. – Dawson
몇 가지 코드를 게시 할 수 있습니까? 자신이하는 일을 정확하게 보지 않고서는 무엇이 잘못 될지 알기가 어렵습니다. – JaredC
죄송합니다. 지금 게시하겠습니다. 10 개의 클래스와 하나의 기본 클래스가 있지만 관련 클래스를 게시합니다. – OniLink