메모리 정적할당은 선언하면서 크기를 지정하여 해당 크기만큼의 메모리를 할당받는 것이다.

1
char ch[10];
cs

이 경우 지역을 벗어나게 되면 수명이 끝나게되어 알아서 메모리에서 지워진다.



반대로 동적할당은 내가 원할때 원하는 크기만큼 메모리를 할당하는 것이다.

1
2
3
4
5
int *= new int;
char* ch = new char[10];
 
delete b;
delete[] ch;
cs

이 경우 사용자가 해제하기 전까지 메모리가 할당되어 지역을 벗어나도 수명이 죽지않는다.

대신 사용 후에는 delete를 통해 직접 지워야하며,  제 때 지우지않으면 메모리가 누수되어 문제가 생길 수 있다.

배열로 할당한 경우 지울때도 배열로 삭제하여야 한다. (5번째줄)

할당한 변수의 주소를 포인터로 받는다.


동적할당은 상수대신 변수로도 할당이 가능하다.

1
2
int t = 10;
char* ch = new char[t];
cs


'프로그래밍 공부 > C++' 카테고리의 다른 글

구조체(struct)  (0) 2018.03.21
문자열 길이구하기, 복사하기, 추가하기 (포인터 이용)  (0) 2018.03.12
주소, 포인터  (0) 2018.03.12
참조(Reference)  (0) 2018.03.12
스택, 큐 구현하기  (0) 2018.03.10
Posted by misty_
,