본문 바로가기
C++/기초

C++ 기초 : 동적 할당 (1)

글: 시플마 2024. 4. 4.

지역 변수는 메모리의 Stack 영역에,

전역, 정적, 외부 변수는 메모리의 Data 영역에 있습니다.

 

그럼 Heap 영역은 무엇을 위한 공간일까요?

 

바로 동적 할당을 위한 공간입니다.

 

변수는 미리 코드에 선언하고 프로그램을 실행합니다.

프로그램이 실행되기 전부터 애초에 특정 공간에 

값이 이미 들어가 있죠.

 

동적 할당은 "프로그램이 실행되는 도중에(런타임)

이 공간이 사용될 수 있어요."라고 지정만 해주는 겁니다.

 

즉 프로그램을 실행하고 있을 때, 이렇게 동적 할당된 공간을

사용하는 동작이 없으면 공간에 값이 들어가지 않습니다.

 

사용하게 되면 지정한 그 공간을 사용하게 되죠.

 

 

아래 코드가 동적 할당을 한 경우입니다.

 

malloc 함수를 사용하여 동적 할당을 할 수 있습니다.

 

malloc 함수를 사용하기 위해 include 해야 하는파일이

몇 가지 있는데 여기서는 "iostream"을 include 하겠습니다.

 

괄호에 숫자를 넣어주면 해당 숫자만큼 공간을

할당한다는 의미입니다. 단위는 Byte입니다.

 

malloc 함수는 인자를 void형으로 받고 있습니다.

 

이유는 동적 할당은 해당 공간이

어떤 자료형으로 사용될지 미리 정하지 않기 때문입니다.

 

그래서 위 코드처럼 동적 할당한 공간을 사용할 때에는

어떤 자료형으로 그 공간을 사용할 것인지 형태를 지정해 주고

사용하는 것입니다. 

 

malloc 함수는 동적 할당한 공간의 시작 주솟값을 반환합니다.

int형 포인터 변수 pInt에 100Byte 공간의 시작 주소가 저장되었겠네요.

 

 

그림으로 표현하면 아래와 같습니다.

당연히 Heap 영역에 할당된 공간은 이름이 없습니다.

 

 

만약 아래 코드처럼

 

if문이 있다고 합시다. 프로그램 실행 중, 특정 키가 눌렸다는

동작이 없으면 애초에 4Byte의 공간은 할당조차 되지 않습니다.

 

특정 키가 눌렸다는 동작이 있으면

그때 4Byte의 공간이 할당되면서 사용되겠죠.

 

 

 

강의 출처 : https://www.youtube.com/watch?v=PFc4g8mxOiI&list=PL4SIC1d_ab-aOxWPucn31NHkQvNPHK1D1&pp=iAQB

 


 

 

'C++ > 기초' 카테고리의 다른 글

C++ 기초 : 가변 배열 (1)  (0) 2024.04.06
C++ 기초 : 동적 할당 (2)  (2) 2024.04.06
C++ 기초 : 구조체 포인터  (0) 2024.04.04
C++ 기초 : wcscmp 함수  (0) 2024.04.04
C++ 기초 : 문자열 (4)  (0) 2024.04.03