Ring buffer(Circular buffer) 고찰
링버퍼 구현체를 찾아보면, 다양한 방법들로 구현이 되어 있다. 이미 하이레벨 언어에서는 기본적으로 지원해주기에, 직접 구현해서 쓸 일을 별로 없는 것 단일 배열로 구현한 형태를 기준으로_HEAD와 _TAIL을 가리키는 포인터 형태가 일반적이다.HEAD는 PUT할 위치를 가르킨다.TAIL은 GET할 위치를 가르킨다.그러면, 내부 멤버변수는 배열, HEAD, TAIL 총 3개, 여기에 SIZE 를 추가하면 총 4개다. 데이터의 크기를 담을 SIZE 변수가 있으면, 비거나, 꽉찬 상태를 체크하기가 쉽다. SIZE변수가 없는 경우는 어떨까?? HEAD와 TAIL로 사이즈를 구하는 것은 불가능 하다. 비었을 경우나, 꽉찬 경우 모두 HEAD == TAIL이 성립하기 때문이다. 이것을 해결한 구현방법은 배열 생성시..