Computer/C/C++

동적 할당

고양이는생선을좋아해 2013. 5. 14. 22:47

 

정적 할당은 고정된 크기로 프로그램이 실행이 끝날 때 까지 기억장소를 할당받는다.

그리고 프로그램 실행이 끝나면 할당된 기억장소가 해제된다.

정적 할당의 문제점을 보면

만약 배열 100칸을 할당했다치면 100개를 초과하는 데이터가 들어올경우 전부 받을 수 없고

또한 100개 미만의 데이터가 왔을 시에 기억공간 낭비가 생긴다.

이 문제점을 해결하기 위한것이 동적 할당이다.

즉 프로그램을 실행하면서 배열의 크기를 결정하고 그 크기만큼의 기억공간을 할당받는 것이다.

                                  

 코드 영역

 데이터 영역

 힙 영역

스택 영역

주기억장치의 4가지 영역 중 힙 영역이 동적으로 할당할 기억 장소

 

동적할당

C 

자료형* 포인터 변수명;

포인터 변수명 = (자료형*)malloc(자료형 크기);

 


C++

자료형* 포인터 변수명;

포인터 변수명 = new 자료형(자료형 크기); 

 

해제

C

free(포인트 변수명);

 


C++

Delete[] 포인터변수명;