shared_ptr과 함께 weak_ptr을 가질 수 있습니다. 그러나 동일한 객체를 참조하는 shared_ptr 및 unique_pointer를 만들 수 있는지 알고 싶었습니다. 그렇다면 어떤 규칙을 따라야합니까?다른 스마트 포인터가 동일한 객체를 참조 할 수 있습니까?
0
A
답변
3
동일한 개체에 unique_ptr
및 shared_ptr
을 만들면 서로에 대해 알 수 없습니다. 따라서 다른 포인터가 이미 해제되었을 때 실수로 한 포인터를 역 참조 할 수있는 것은 말할 것도없고 "이중 자유"오류가 발생합니다.
간단히 말해서,하지 마세요. unique_ptr에서 shared_ptr로 또는 그 반대로 소유권을 이전해야하는 경우 "새"포인터를 만들 때 "이전"포인터에서 release()
으로 전화하십시오.
"어떤 규칙을 따라야합니까?"라는 질문에 대한 대답은 둘 다입니다. 각 스마트 포인터는 자체 규칙을 따르지 만 전체적인 시스템 동작은 잘못된 것입니다. delete
을 호출하기 전이나 후에 원시 포인터에서 하나의 스마트 포인터를 생성하는 것과 같습니다.
같은 조언은 동일한 원시 포인터에 두 개의 unique_ptr
또는 두 개의 shared_ptr
을 만드는 데 적용된다는 점에 유의하십시오. 스마트 포인터의 유형을 혼합한다는 사실은 실제로 적절하지 않습니다.
관련 문제
- 1. 포인터가 다른 유형을 어떻게 참조 할 수 있습니까?
- 2. CUDA 스마트 포인터가 있습니까?
- 3. 두 포인터가 동일한 참조
- 4. 동일한 객체 내에서 객체를 참조 할 수 있습니까?
- 5. C++ 스마트 포인터가 데이터를 완전히 캡슐화 할 수 있습니까?
- 6. 부스트 스마트 포인터가 도움이됩니까?
- 7. 자바에서 동적으로 객체를 참조 할 수 있습니까?
- 8. 문자열을 사용하여 객체를 참조 할 수 있습니까?
- 9. 생성자의 객체를 참조 할 수 있습니까?
- 10. C++ 참조가 다른 객체를 참조 할 수 있습니까?
- 11. 어떻게 PHP에서 다른 객체를 참조 할 수 있습니까?
- 12. 하나의 YAML 객체가 다른 YAML 객체를 참조 할 수 있습니까?
- 13. 스마트 포인터가 가리키는 개체 삭제
- 14. 포인터가 아니더라도 C++ 반복기를 역 참조 할 수 있습니까?
- 15. 동일한 json 파일의 다른 객체에서 하나의 json 객체를 참조 할 수 있습니까?
- 16. 시간 지정 포인터가 있습니까?
- 17. 동일한 NSError 객체를 재사용 할 때 문제가 될 수 있습니까?
- 18. 참조 루프가있는 C의 스마트 포인터
- 19. 스마트 포인터가 보유해야하는 '포인터'를 반환합니다.
- 20. 참조 카운터가없는 스마트 포인터
- 21. MainWindow.cs를 다른 클래스에서 참조 할 수 있습니까?
- 22. strings.xml에서 다른 문자열을 참조 할 수 있습니까?
- 23. Objective-C 동일한 객체에 여러 포인터가 있습니까?
- 24. 스마트 포인터 대 참조
- 25. 어떻게 개체 포인터가 참조 해제 할 메모리 양을 알고 있습니까?
- 26. 스마트 포인터가 보유한 객체가 다른 곳에서 삭제되면 어떻게됩니까?
- 27. C++ 스마트 포인터가 힙의 문자열 객체에 필요합니까?
- 28. Qt 스마트 포인터가 boost :: shared_array에 해당하는가요?
- 29. 참조 문서에서 양식 데이터를 어떻게 참조 할 수 있습니까?
- 30. 동일한 객체를 값으로 가져 와서 다른 방법으로 사용할 수 있습니까?
그럴 수도 있지만, 그러면 나쁠 것입니다. 스마트 포인터를 사용할 시점이 없습니다. – Nawaz
오브젝트를 참조하는 * 유일한 포인터 이상의 개념은 바로 접두어 인 * unique *과 다소 반 직관적입니다. 왜 이걸하고 싶어? – WhozCraig
우리는 방금 공부하고있었습니다. 질문은 우리의 마음에 왔습니다. 우리는 그것에 대한 답을 찾지 못했습니다. –