3장 배열, 구조체, 포인터
- 정리의 기반은 학교 강의 노트와 [c언어로 쉽게 풀어쓴 자료구조]를 참고하였습니다.
- 시험 준비를 위한 정리이기 때문에, 기본적인 정의나 특징은 skip하였습니다.
저의 정리가 옳지 않다면 피드백 부탁드립니다.
사실 c언어로 자료 구조를 공부하면서 위 3가지의 개념이 잘 자리하지 않으면, 위 3가지를 다시 제대로 이해하고 와야한다. 그러므로, 여기서 위 3가지 개념의 정리는 하지 않고 이 3가지를 이용한 자료 구조에서의 특징을 정리하고자 한다.
히프(heap)
동적 메모리가 할당되는 공간으로, 운영체제가 사용하지 않는 메모리 공간을 모아둔 곳이다.
배열의 특징
- 배열의 크기가 아무리 커지더라도 접근 속도는 일정하다.
- 배열의 이름 = 첫번째 원소를 가리키는 포인터
- 삽입, 삭제가 발생하는 자료의 처리에서 기억 장소의 낭비가 심할 수 있다.
- 메모리 위치 ex)
list[0] = 기본 주소
list[1] = 기본 주소 + sizeof(자료형) _ 1
list[2] = 기본 주소 + sizeof(자료형) _ 2
.
.
.
list[i] = 기본 주소 + sizeof(자료형) * i
동적 메모리 할당 과정
1
2
3
4
5
6
7
8
int *p;
p = (int*)malloc(sizeof(int));
*p = 1000; //메모리 사용
/*
포인터를 활용한 코드
*/
free(p); //사용한 후에는 메모리 반납