개요
- 메모리는 한 address에 1byte를 저장할 수 있다.
- 제일 작은 자료형은
char (8bit)
- boolean만 저장하는 배열이 필요한 경우에도
char 배열만 사용해야한다.
- 필요한 공간 (1bit)보다 많은 (7bit)가 낭비된다.
- 이를 해소하기 위해,
element 를 정의하고 그 element를 쪼개서 boolean(0,1)을 저장한다.
- ex 1)
char를 element로 사용하면, 한 element로 boolean 8개를 관리함
- ex 2)
int를 element로 사용하면 한 element로 boolean 32개를 관리함
- 그리고, bit연산을 편하게 할 여러 함수를 정의한다.
bitmap 구조체
struct bitmap {
size_t bit_cnt; /* Number of bits. */
elem_type *bits; /* Elements that represent bits. */
};
bit_cnt : bitmap의 bit개수
bits
- bitmap 자료구조는
unsigned long 을 element로 가짐
unsigned long이므로 element 1개당 bit가 64개
bitmap_create()로 생성시 필요한 element의 개수만큼, 메모리를 동적할당 받는다.
bitmap.h 파일에 없고 bitmap.c 파일에만 있으므로 멤버변수를 직접 접근하는 것은 불가능하다.
- bitmap 자료구조에서 제공하는 함수를 통해 bitmap 자료구조를 사용할 수 있다.
bitmap 함수
1. Creation and destruction
struct bitmap *bitmap_create (size_t bit_cnt)
- bitmap 자료구조를 생성한다.
- bit 개수를 인자로 받아, 필요한 만큼
element를 동적할당함.
struct bitmap *bitmap_create_in_buf (size_t bit_cnt, void *, size_t byte_cnt)
- 이미 할당된 블록에 bitmap 자료구조를 생성한다.
size_t bitmap_buf_size (size_t bit_cnt)
- 원하는 크기의 bitmap을 생성하기위해 필요한, 메모리의 크기를 알 수 있다.
void bitmap_destroy (struct bitmap *)