10-3.동적 메모리 할당
Static Allocation(정적할당).
프로그램을 작성할 때 미리 메모리 필요량을 지정.
Dynamic Alocation(동적할당).
실행 중에(Run Time) 필요한만큼 메모리를 할당.
필요할 때 필요한만큼만 메모리를 할당에 사용하고, 다 쓰면 버리는 것.
사용시기.
1. 메모리 필요량을 프로그램 작성중에 결정할 수 없을 때.
2. 임시적인 메모리가 필요할 때.
동적 할당된 메모리 => 이름이 없는 변수.
독점적인 메모리 영역을 차지하고 있으므로 값을 기억할 수 있느나 이름이 없으므로 포인터로만 접근 가능.
메모리 실체 = 시스템에 장착되어 있는 RAM.
RAM = 프로그램이 작업을 하는 작업공간. 크면 성능up, 작으면 성능down.
메모리 관리원칙.
1. 메모리의 관리주체 = 운영체제.
2. 운영체제는 메모리가 있는 한 할당 요청을 거절하지 않음.
3. 한 번 할당된 메모리 공간은 일부러 해제하지 않는 한 다른 목적을 위해 재할당되지 않음.
4. 응용프로그램이 할당된 메모리를 해제시, 운영체제는 이 공간을 빈 영역으로 인식하고 다른 목적을 위해 사용할 수 있도록 함. 즉, 특정 메모리 공간을 동시에 두 프로그램이 사용할 수는 없지만 순서대로 번갈아 가면서 사용하는 것은 가능함.
메모리할당 및 해제.
메모리를 동적으로 할당할 때의 함수: void* malloc(size_t_size);
malloc(엠얼록)함수 = 응용 프로그램이 필요로하는 양(크기) 만큼 운영체제에게 할당을 요청. 운영체제는 사용되지 않는 빈 영역(힙)을 찾아 요청한만큼 메모리를 할당하여 그 시작 번지를 리턴.
size_t : 메모리 양을 나타내는 단위.
메모리를 동적으로 해제할 때의 함수: void free(void *memblock);
응용프로그램은 메모리를 다 사용한 후에 반드시 free함수를 호출하여 메모리를 해제하여야 함.
재할당.
씨얼록(calloc)함수 = 응용 프로그램이 필요로하는 양(개수, 크기)만큼 운영체제에게 할당을 요청.운영체제는 사용되지 않는 빈 영역(힙)을 찾아 요청한만큼 메모리를 할당하여 그 시작 번지를 리턴.
void *calloc( size_t num, size_t size );
첫번째 인수 num = 할당할 요소의 개수.
두번재 인수 size = 요소의 크기.
엠얼록 함수는 필요한 메모리를 바이트 단위 하나로만 전달 받음. 메모리 할당만 하므로 할당된 메모리에 쓰레기 값이 들어 있음.
씨얼록 함수는 두개의 값으로 나누어 전달받음. 할당 후 모든 메모리를 0으로 채움.
리얼록(realloc)함수.
void *realloc( void *memblock, size_t size );
'programTips.Tutorial' 카테고리의 다른 글
C++ (0) | 2012.12.26 |
---|---|
비트 구조체 (0) | 2012.12.26 |
new (0) | 2012.12.26 |
C++ (0) | 2012.12.26 |
객체지향프로그래밍 OOP(Object Oriented Programming) (0) | 2012.12.26 |
[C] 함수 (0) | 2012.12.21 |
[C] 배열(Array) (0) | 2012.12.18 |
[C] void형 포인터 (0) | 2012.12.17 |
[C] 포인터 (0) | 2012.12.17 |
유용한 일러스트레이터 shortcut (0) | 2012.09.28 |