스마트 포인터

[Basic C++] #61_객체 풀, Obejct Pooling C++의 "디자인 효율성"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 객체 풀링 1. 개념 객체가 필요할 때마다 직접 생성하는 것이 아니라, 시작 시점에 한 번만 생성됩니다. 필요할 때마다 객체 풀에 요청하며, 수명이 끝난 객체는 객체 풀에 되돌려 놓습니다. 즉, 객체의 생성자를 매번 필요할 때마다 호출하지 않고, 시작 시점에 미리 준비해 놓습니다. 2. 언제? 프로그램이 구동되는 동안 빈번하게 발생하는 "생성자"와 "소멸자" 호출을 피하기 위한 메커니즘. 개수가 많고, 비교적 수명이 짧은 타입의 객체들의 사용은 "객체 풀" 사용을 고려해야 합니다! 예제 1. 목표 객체들을 ..
1. 개념 1. 스마트 포인터자원 관리는 C++에서 가장 골치 아픈 문제입니다. 객체를 동적 할당받은 경우 "delete" 호출 없이 자원 해제가 되지 않기 때문에 "delete" 호출을 잊어버리는 경우 심각한 문제(eg 메모리 릭)가 발생할 수 있습니다. 더불어, 단순한 포인터의 동적 할당 수행은 Aliasing 문제도 동반합니다. 어떤 경우에는 하나의 포인터를 여러 코드 위치에서 복제하여 참조할 수 있습니다. 이때, 마지막으로 사용된 곳에서 "delete" 호출을 통해 자원 해제를 진행해야 하지만, 파악하기 굉장히 어렵죠.이때, 스마트 포인터가 큰 도움을 줄 수 있습니다. 스마트 포인터는 "스택(정적 할당 받은 메모리들의 영역)"의 안정성과 유연성을 포함합니다. 스마트 포인터를 통해 동적 할당받은 메..
[Effective C++] #13 자원 관리 객체, std::auto_ptr, std::shared_ptr Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 3장 "자원 관리", 항목 13 "자원 관리에는 객체가 그만"에 해당하는 내용입니다. std::auto_ptr A_클래스* createAClass(); // A클래스 객체를 가리키는 포인터를 반환, 팩토리 함수. void f() { A_클래스* pA = createAClass();// 팩토리 함수 호출 ... delete pA;// pA 객체의 자원을 해제합니다. } *******************std::auto_ptr을 적용*****************..
Hardii2
'스마트 포인터' 태그의 글 목록