스마트 포인터 예제

스마트 포인터를 자동(로컬) 변수로 선언합니다. (스마트 포인터 자체에 새 또는 malloc 식을 사용 하지 마십시오.) std::unique_ptr 인스턴스는 복사할 수 없습니다. 이렇게 하면 포인터가 여러 번 삭제되지 않습니다(잘못). 그러나 참조를 호출하는 다른 함수로 전달할 수 있습니다. 여러 유형의 스마트 포인터가 있습니다. 일부는 참조 카운트로 작업하고 다른 일부는 개체의 소유권을 하나의 포인터에 할당하여 작동합니다. 언어가 자동 가비지 수집(예: Java 또는 C#)을 지원하는 경우 메모리 관리의 회수 및 안전 측면에 스마트 포인터가 필요하지 않으면서 캐시 데이터 구조 레지던스 관리 및 및 기타 용도에 유용합니다. 파일 핸들 또는 네트워크 소켓과 같은 개체의 리소스 관리. 크리스, 세르그데프, 요드의 정의가 정확합니다. 스마트 포인터는 단순히 -> 및 * 연산자를 오버로드하는 클래스입니다. 즉, 개체가 의미적으로 포인터처럼 보이지만 참조 계산, 자동 파괴 등을 포함하여 대부분의 경우 shared_ptr 및 auto_ptr을 포함하여 더 차가운 작업을 수행 할 수 있지만 대부분의 경우 자신의 작은 세트와 함께 제공됩니다. Idiosyncrasies. COM 개체로 작업할 때 인터페이스 포인터를 적절한 스마트 포인터 유형으로 래핑합니다.

활성 템플릿 라이브러리(ATL)는 다양한 용도로 여러 스마트 포인터를 정의합니다. .tlb 파일에서 래퍼 클래스를 만들 때 컴파일러가 사용하는 _com_ptr_t 스마트 포인터 형식을 사용할 수도 있습니다. ATL 헤더 파일을 포함하지 않으려는 경우 가장 좋은 선택입니다. 보너스 포인트: 타사 함수가 스마트 포인터를 반환하는 경우 해당 유형, 수행할 수 있는 작업 및 데이터 수명 관리 방법을 신속하게 추론할 수 있습니다. 기존 답변은 좋지만 스마트 포인터가 해결하려는 문제에 대한 (완전한) 대답이 아닌 경우 수행할 작업을 다루지 마십시오. 비교에 의한 스마트 포인터는 개체가 소멸되는 시기에 대한 정책을 정의합니다. 여전히 개체를 만들어야 하지만 더 이상 개체를 파괴할 염려가 없습니다. const. 포인터를 사용하여 데이터 형식을 변경할 수 없음을 의미하는 데이터 형식 T에 대한 포인터입니다. 즉 * PTR1 = 19 ; 작동하지 않습니다. 그러나 포인터를 이동할 수 있습니다.

즉 ptr1 ++ , ptr1– ; 등작동합니다. 뒤로 읽기 : Const이 스마트 포인터는 원시 포인터로 해결할 수없는 성가신 문제를 해결하는 데 유용합니다. 우리는 얼마나 곧 볼 수 있습니다. 스마트 포인터는 일반 포인터의 래퍼인 클래스입니다. 일반 포인터와 달리 스마트 포인트의 수명 원은 참조 수(스마트 포인터 개체가 할당된 시간)를 기반으로 합니다.

This entry was posted in Uncategorized by admin. Bookmark the permalink.

Comments are closed.