동적 메모리 할당이 필요한 이유

CODEDRAGON Development/C, C++

반응형


 

동적 메모리 할당이 필요한 이유

·       선언된 배열 요소의 수가 사용된 요소 보다 많은 경우 (메모리 낭비)

·       선언된 배열 요소의 수가 사용된 요소의 수보다 적은 경우 (메모리 부족)

·       배열 선언 배열 길이에 변수를 설정한 경우 에러 발생

 

 

 

선언된 배열 요소의 수가 사용된 요소 보다 많은 경우 (메모리 낭비)

컴파일 타임에 미리 지정시 메모리 낭비 발생

int array[5];                                    // 선언된 배열 요소 : 5(20byte)

array[0]=10, array[1]=20, array[2]=30;  // 사용된 배열 요소 : 3(12byte)

 

 

 

선언된 배열 요소의 수가 사용된 요소의 수보다 적은 경우 (메모리 부족)

컴파일 타임에 미리 확정시 메모리 부족 발생

int array[2];                                    //  선언된 배열 요소 : 2(8byte)

array[0]=10, array[1]=20, array[2]=30;  //  사용된 배열 요소 : 3(12byte)

 

 

 

배열 선언 배열 길이에 변수를 설정한 경우 에러 발생

프로그래머가 필요한 메모리 크기를 예측할 없습니다. 따라서 동적 메모리 할당이 필요하게 됩니다.

int a=5;

int array[a]            // 배열 선언 배열 a 배열 길이로 사용

void init(int a){

    int array[a];       // 배열 선언 함수의 인자(지역 변수) a 배열 길이로 사용

}