2012년 3월 9일 금요일

VC7에 포함된 STL deque의 데이터 할당 구조

VC7.0의 STL 기준으로..~ 다른 버전도 크게 다르지 않을꺼라 본다.~


deque는 내부적으로 고정된 크기의(16byte) 맵형식으로 처리한다.(포인터 배열)

*여기서 맵은 의미상 이름이고.. 그냥 하나의 할당된 메모리 블럭이라고 생각해도 무관하리라 본다.


데이터 타입 / 16 == 1개 맵에 담을수 있는 데이터 개수

deque에 push_front()와 push_back()명령이 이루어지면 내부적으로 2개의 맵이 생성되어진다.

push_back은 맵의 앞부분 부터 채워지고

push_front는 맵의 뒷부분 부터 채워진다.

채워지는 방향에 따라 다른 맵을 생성하므로 2개가 만들어진다...

당연한 얘기지만 내부에 적재되는 데이터가 많아지면 여러개의 맵이 생성되고 데이터가 누적되어 진다.
만약 데이터의 타입의 크기가 8보다 크다면 1개의 데이터 당 1개의 맵을 차지하게 된다.~

댓글 없음:

댓글 쓰기