리스트 구조

2004/09/29 19:36
Ⅰ 리스트 구조의 개념
1. 자료들을 기억 장소의 불연속 공간에 저장시켜 놓고 포인터를 이용하여 각각의 자료들은 연결시키는 구조. 동적 메모리 관리가 가능하다.

2. 하나의 노드(node)는 크게 두 부분으로 나뉘는데, 첫 번째 부분엔 자료를 저장하고, 두 번째 부분에는 다음 자료의 시작 주소를 갖는 포인터 변수를 저장한다. 이때 사용되는 포인터 변수를 링크(link)라고 한다. 마지막 자료의 링크에는 '\0'을 저장한다.

3. 헤더 포인터(header pointer) :: 첫 번째 노드를 가리키는 포인터.

Ⅱ 동적 메모리 관리
1. 스토리지 풀(storage pool) = 힙(heap) :: 정적 영역과 스택 사이에 위치하는 곳. 사용자가 메모리를 요구하면 공급하고, 메모리 해제를 요구하면 다시 저장한다.

2. 동적 메모리 관리 함수 - in alloc.h

 ① malloc() 함수 - stdlib.h
  - memory allocation
  - 프로토타입 :: void *malloc( int nBytes );
  - malloc(size);
  - size 만큼의 영역(byte)을 확보하며, 그 시작주소를 반환한다. ( void형 포인터 )
  - 만약 할당하기 위한 충분한 공간이 없으면 NULL을 반환한다.
  - 기억 영역의 쓰임을 지정하기 위해 cast 연산자를 이용해서 리턴값을 전달받는 포인터 변수와 자료형을 일치시킨다.

 ② calloc() 함수
  - calloc(times, size);
  - size 바이트의 메모리 영역을 times개 만큼 확보한 뒤, 그 시작주소를 반환한다.
  - 지정된 영역을 확보하여 0 또는 '\0' 으로 초기화 한다.
  - 새로운 영역에 메모리가 확보되지 않을 경우는 NULL을 반환한다.
  - 기억 영역의 쓰임을 지정하기 위해 cast 연산자를 이용해서 리턴값을 전달받는 포인터 변수와 자료형을 일치시킨다.

 ③ realloc() 함수
  - 이미 확보되어 있는 메모리 크기를 변경한다.
  - realloc(block, size);
  - block :: malloc(), calloc(), realloc()에 의해 이미 할당되어 있는 메모리 영역에 대한 포인터.
  - size :: 새로 할당하고자 하는 메모리의 크기(byte).
  - 새로 확보된 메모리 영역의 포인터를 반환한다.

 ④ free() 함수
  - malloc(), calloc(), realloc()에 의해서 확보되었던 메모리 영역을 해제해 다시 자유 공간으로 만드는 함수.
  - free(block);
  - block :: 해제할 메모리 영역의 포인터.
크리에이티브 커먼즈 라이센스
Creative Commons License
2004/09/29 19:36 2004/09/29 19:36


http://basecom.kr/trackback/84

Leave a Comment
블로그이미지
About
basecom

Recent Trackback




420713
Today : 56   Yesterday : 116