programTips.Tutorial

[C] 동적메모리할당.

dd2i 2012. 12. 17. 16:33
반응형

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