동적 메모리와 연결리스트 Ø malloc 함수 원형 void* malloc(size_t size) Ø malloc 함수 사용 예제 int* I = (int*) malloc(sizeof(int)); Ø free 함수 원형 void free(void* ptr) Ø free 함수 사용 예제 free(arr_2); Network & Database Lab. 2
동적 메모리와 연결리스트 Ø malloc() Network & Database Lab. 3
동적 메모리와 연결리스트 동적 메모리 할당 #include <stdio. h> #include <stdlib. h> int main() { int arr_1[5]; int *arr_2; int i; 동적 메모리 할당 for(i=0; i < 5; i++) { arr_1[i] = i+1; } arr_2 = (int*) malloc(sizeof(int)*i); // 메모리 할당, 배열의 크기만큼 할당하기 위해 5를 곱함 for(i =0; i<5; i++) { arr_2[i] = arr_1[i]; printf("%d, %dn", arr_1[i], arr_2[i]); } 동적 메모리 해제 free(arr_2); } Network & Database Lab. 4
동적 메모리와 연결리스트 #include <stdio. h> #include <stdlib. h> int main(void) { char *pc = NULL; int i = 0; pc = (char *)malloc(100*sizeof(char)); if( pc == NULL ) { printf("메모리 할당 오류n"); exit(1); } for(i=0; i<26; i++){ pc[i] = 'a'+i; // 알파벳 소문자를 순서대로 대입 } pc[i] = 0; // NULL 문자 추가 printf("%sn", pc); free(pc); return 0; } abcdefghijklmnopqrstuvwxyz Network & Database Lab. 5
동적 메모리와 연결리스트 간단한 연결리스트 생성 NODE *p 1; p 1 = (NODE *)malloc(sizeof(NODE)); p 1 ->data = 10; p 1 ->link = NULL; NODE *p 2; p 2 = (NODE *)malloc(sizeof(NODE)); p 2 ->data = 20; p 2 ->link = NULL; p 1 ->link = p 2; free(p 1); free(p 2); Network & Database Lab. 6