Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

codingfarm

제 1부 생성패턴 본문

소프트웨어 공학/디자인패턴

제 1부 생성패턴

scarecrow1992 2019. 10. 22. 18:33
  • C++에서 객체를 생성하는 것은 매우 까다롭다.
    • 어느 메모리 영역? 
      • 스택할당
      • 힙할당
        • 어떤 포인터로?
          • 일반 포인터
          • 스마트포인터
    • 객체의 생성방법은?
      • native 코드로
      • 생성 패턴으로
        • builder, factory
  • 생성패턴 
    • 정의 : 까다로운 객체 생성 절차에 대한 어려움을 해소하는 디자인패턴

 

생성패턴에 대해 본격적으로 배우기 전 C++의 기본적인 부분을 알아야 한다.

 

 

스택(stack) 할당

  • 스택 메모리를 할당받아 객체를 생성하면 stack에 할당됨
  • scope를 벗어날 때 자동으로 소멸되며 소멸자가 호출됨

 

힙(heap) 할당

  • 원시 포인터를 이용하여 동적 할당을 통해 객체를 생성하면 heap에 할당됨
  • scope를 벗어나도 소멸되지 않는다.
    • 메모리 해제를 비롯한 뒷정리에 대해 불분명한 문제가 생긴다.

 

스마트 포인터

  • 힙에 할당된 포인터를 받아 더이상 참조하는 곳이 없으면 자동으로 소멸되도록 관리되는 포인터
  • unique 포인터(unique_ptr)
    • "독점" 포인터라 함
    • 복제할 수 없고 다른 함수에 넘겨줄 수도 없음
      • 단, 원본과 그 제어권 까지 통째로 이양하는 것은 가능
  • shared 포인터(shared_ptr)
    • "공유" 포인터라 함
    • 힙에 할당된 포인터를 받아 코드 안의 다른 곳과 포인터를 공유함

 

Comments