컴퓨터사이언스/C++
정적 동적 메모리 차이 (C++)
누군가의 이야기
2022. 3. 12. 17:11
728x90
메모리 할당 방식
static: 선언과 정의 // 대표적인 예시 배열 (사이즈나 데이터 타입 선언할 때 다 들어가있다.)
컴파일시 공간 확보.
사용하지 않는 메모리까지 충분히 잡아서 낭비함
dynamic: 미리 정의된 연산자? 사용 // 포인터를 활용해서 동적 메모리 할당, 벡터(표준 라이브러리) 등
실행 시 필요한만큼 heap에 할당
메모리의 주소를 사용(포인터)하여 접근
new / delete 사용(메모리 할당, 할당된 메모리 해제) // C++
정적 메모리 할당 (배열) | 동적 메모리 할당 (포인터) | |
선언 | int arrayVar[50]; | int* ptrVar; |
메모리 할당 | 불필요 (프로그램이 자동으로 해줌) | ptrVar = new int[50]; |
메모리 해제 | 불가능 (종료시까지 유지) | delete ptrVar; |
메모리 사이즈 증가? | 불가능 | 더 할당 받으면 됨 |
메모리 사이즈 감소? | 불가능 | 해제하고 작게 유지하면 됨 |
장점 | 코드 짜기 쉬움 | 메모리 최적화에 용이 |
단점 | 메모리 고정되어서 혹시나 추가 메모리가 필요한 불확실에 대처 어려움 | 포인터 많이 쓰이면 되게 복잡해짐 |
728x90