컴퓨터사이언스/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