MallocLab impicit 보고서
- 최초 등록일
- 2016.02.02
- 최종 저작일
- 2015.02
- 12페이지/ 한컴오피스
- 가격 3,000원
목차
1. 개 요
2. mm_naive
3. mm_implicit
본문내용
1. 개요
Malloc Lab은 동적 저장 공간을 할당하기 위한 코드를 구현하는 것으로 주어진 mm-implicit.c 파일에 각자 방식대로의 동적 할당 코드를 구현하여 완성하는 방식이다. 이번 주의 과제는 implicit방식의 동적 할당으로 장점으로는 단순성이 있고, 단점으로는 블록을 할당할 때 드는 비용이 전체 할당된 블록과 할당되지 않은 블록의 수에 비례하는 것이다.
2. mm_naive
MACRO
ALIGNMENT 8 : 저장 공간을 double word 사이즈 단위로 할당 함으로 8로 선언
ALIGN(size) (((size) + (ALIGNMENT-1)) & ~0x7) : size의 단위를 위에 선언한 단위로 맞추어 줌
SIZE_T_SIZE (ALIGN(sizeof(size_t))) : size_t형 사이즈를 ALIGN을 이용하여 위에 선언한 단위로 맞추어 줌
SIZE_PTR(p) ((size_t*)(((char*)(p)) - SIZE_T_SIZE)) : p에서 SIZE_T_SIZE 즉 8을 빼서 Header로 이동한 다음 해당 형을 size_t로 바꿈에 의해 앞에 4byte만 표현하여 p의 사이즈를 받아 옴
사용 함수
(1) int mm_init(void) : heap을 초기화 해주는 함수 구현이 되어있지 않아 0을 리턴
(2) void *malloc(size_t size) : size바이트의 저장 공간 할당을 해주는 함수,
ALIGN으로 입력받은 size를 SIZE_T_SIZE 즉 8을 더한 후 이 값보다 크거나 같은 8의 배수를 구하여 newsize에 넣어준다. 그리고 해당 newsize 만큼의 저장 공간을 p에 넣어 준다. 만약 p가 0 보다 작으면 즉 저장 공간을 받지 못하였으므로 NULL을 리턴 해주고 그렇지 않으면 p에 SIZE_T_SIZE 즉 8을 더하여 주고, p의 사이즈 값에 입력 받은 size를 넣어 준다. 그리고 p를 리턴 해준다.
(3) free(void *ptr) : 할당 받은 ptr 메모리를 가용 메모리로 바꾸어 주는 함수 구현이 되어있지 않음
참고 자료
없음