포트폴리오 만들기

4.MemoryPool,ObjectPool TestCode , Singleton 변경점

Roka_is_back 2023. 12. 14.

MemoryPool TestCode

memorypool testcode

 

MemoryPool 변경점

1.AssignSize의 for문 조건식을 내부로 이동.

  이유는 i*=2 한 값을 다음 for문에서 검사하기 때문에 원치 않은 동작을 하기 때문이다.

assignsize 변경

ObjectPool TestCode

 

ObjectPool 변경점

1.Init과 Release 함수를 하위에서 구현하도록 강제함.
   이유는 Manager마다 만들어야 할 Object Class가 다르기 때문에 초기화가 다 다르게 되어야 함.

2. AddPool 함수를 템플릿화 함.

   이유는 예를 들어 Origin : Monster , ObjectType : Pig,Spider일때,

   Pool<Origin>으로 관리하고 실제 각 Pool 내부 데이터는 ObjectType으로 적용하기 위해 변경함.
  (ObjectPool<Pig>, ObjectPool<Monster> 는 서로 상속관계가 아니기 때문에 업캐스팅의 효과를 볼수 없음.
   강제 형변환을 하기 때문에 ObjectPool<Pig> 상태에서 내부에서 init 한 다음에 ObjectPool<Origin>으로 형변환 해서

    mPools에 넣어줘야함.)

 

Singleton 

singleton 변경점

1. smart pointer 를 원시 포인터로 변경했다.

= 이유는 class의 생성, 소멸자는 private 접근 지정자이며, friend 는 singleton class 에만 해줬다.

   문제는 smart pointer에 대해서는 friend 해주지 않았기 때문에 접근할 수 없다.

2. Create ,Destroy 함수 추가.

    생성주기를 명확하게 하기 위해 변경했다.

 

댓글