«smart-pointer» 태그된 질문

11
스마트 포인터가있는 경우 가비지 콜렉션이 필요한 이유
요즘에는 많은 언어가 가비지 수집됩니다. 타사에서 C ++로도 사용할 수 있습니다. 그러나 C ++에는 RAII 및 스마트 포인터가 있습니다. 가비지 수집을 사용하는 요점은 무엇입니까? 여분의 일을하고 있습니까? 그리고 C #과 같은 다른 언어에서 모든 참조가 사양 및 구현에 의해 스마트 포인터 (RAII를 따로 유지)로 취급된다면 가비지 수집기가 여전히 필요합니까? 아니라면 …

9
최후의 수단으로 std :: shared_ptr?
방금 "Going Native 2012"스트림을보고 있었고에 대한 토론을 발견했습니다 std::shared_ptr. 나는 Bjarne의 다소 부정적인 견해 std::shared_ptr와 물체의 수명이 불확실 할 때 "최후의 수단"으로 사용해야한다는 그의 의견 을 듣고 약간 놀랐습니다 . 누구든지 이것을 좀 더 깊이 설명하고 싶습니까? 안전한 방법으로 std::shared_ptr객체 수명을 프로그래밍하지 않고 계속 관리 할 수있는 방법은 무엇입니까?

1
raw, weak_ptr, unique_ptr, shared_ptr 등… 현명하게 선택하는 방법?
C ++에는 많은 포인터가 있지만 5 년 정도면 정직하게 C ++ 프로그래밍 (구체적으로 Qt 프레임 워크)에서는 오래된 원시 포인터 만 사용합니다. SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); 다른 "스마트 한"포인터가 많이 있다는 것을 알고 있습니다. // shared pointer: shared_ptr<SomeKindofObject> Object; // unique pointer: unique_ptr<SomeKindofObject> Object; // weak pointer: weak_ptr<SomeKindofObject> Object; 그러나 …

5
Java / C #에서 RAII를 구현할 수없는 이유는 무엇입니까?
질문 : Java / C #에서 RAII를 구현할 수없는 이유는 무엇입니까? 설명 : 가비지 수집기가 결정적이지 않다는 것을 알고 있습니다. 따라서 현재 언어 기능을 사용하면 범위 종료시 객체의 Dispose () 메서드를 자동으로 호출 할 수 없습니다. 그러나 그러한 결정적 기능을 추가 할 수 있습니까? 내 이해 : RAII 구현은 두 …

5
C ++ : 클래스가 종속성을 소유하거나 관찰해야합니까?
class Foobar사용 하는 클래스가 있다고 가정 해보십시오 Widget. 좋은 시절에는 Widgetwolud를의 필드로 선언 Foobar하거나 다형성 동작이 필요한 경우 스마트 포인터로 선언 하면 생성자에서 초기화됩니다. class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // or std::unique_ptr<Widget> widget; public: Foobar() : widget(std::make_unique<Widget>(blah blah blah)) {} (…) }; 그리고 …

3
큰 목록을 파괴하면 스택이 오버플로됩니까?
다음과 같은 단일 연결 목록 구현을 고려하십시오. struct node { std::unique_ptr<node> next; ComplicatedDestructorClass data; } 이제 std::unique_ptr<node> head인스턴스를 사용하지 않고 범위를 벗어난 소멸자를 호출 한다고 가정 해보십시오 . 이것이 충분히 큰 목록에 대해 내 스택을 날려 버립니까? 이 공정은 컴파일러 (인라인 꽤 복잡 최적화를 할 것이라고 가정하는 것입니다 unique_ptr'로 소멸자를 …

1
최신 C ++로 포팅하는 키 / 밸류 스토어 개발
Cassandra와 비슷한 데이터베이스 서버를 개발 중입니다. C로 개발이 시작되었지만 클래스 없이는 상황이 매우 복잡해졌습니다. 현재 C ++ 11로 모든 것을 이식했지만 여전히 "현대"C ++를 배우고 있으며 많은 것들에 대해 의문이 있습니다. 데이터베이스는 키 / 값 쌍으로 작동합니다. 모든 쌍에는 추가 정보가 있습니다. 만기 시점 (만료되지 않은 경우 0). 각 쌍은 …

4
비 결정적 자원 관리가 유출 된 추상화인가?
내가 볼 수 있듯이, 결정 론적 파괴와 명백한 두 가지 형태의 자원 관리가 있습니다. 전자의 예는 C ++ 소멸자 및 스마트 포인터 또는 Perl의 DESTROY 하위이고 후자의 예는 Ruby의 관리 대상 자원 패러다임 또는 .NET의 IDispose 인터페이스입니다. 최신 언어는 후자를 선택하는 것으로 보이며, 비 참조 계수 품종의 가비지 수집 시스템을 …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.