지역변수 static
- Stack영역에 저장되고, 특정 함수나 특정 스코프 내에서 선언되어 사용된다.
- 즉, Block화 되어있는 공간에 선언된 변수를 의미
- 최초 할당되는 호출 시점에 생성된다.
전역변수 extern
- Data영역에 저장되고, 프로그램 전체에서 사용할 수 있는 변수로 함수 외부에서 선언된다.
- static 변수, extern 변수나 클래스 외부에 선언된 변수를 의미
- 컴파일이 완료되었을 때(프로그램이 시작될 때) 생성된다.
동적변수
- 런타임 중에 new 나 malloc을 이용하여 동적으로 메모리가 할당된 변수
- Heap 영역에 저장된다.
malloc과 new의 공통점
- 사용할 연속적인 메모리 공간을 할당한다.
- 메모리를 할당하고 free와 delete로 메모리를 해제해야 한다.
malloc과 new의 차이
- malloc은 바이트 단위의 할당이고, new는 클래스 크기 단위의 할당이다.
- 따라서 malloc은 리턴타입이 void* 형이므로 sizeof() 함수로 사이즈를 매개변수로 전달하고, new는 할당하는 타입을 지정하면 알아서 할당하는 타입의 포인터로 사이즈가 넘어온다.
- malloc은 stdlib.h 라이브러리에서 제공해주는 함수이고, new는 C++에서 기본으로 제공되는 키워드로 라이브러리 추가 없이 사용할 수 있다.
- malloc은 메모리를 동적으로 할당하는것만이 목적이므로 초기값을 지정할 수 없고, new는 할당과 동시에 초기화할 수 있다.
- 따라서 new를 이용한 오브젝트 생성만이 메모리 할당 후 오브젝트 생성 직후에 생성자를 호출한다.
malloc과 new의 차이
C++에서는 메모리 동적 할당을 위해 malloc과 new 둘 다 쓸 수 있습니다. 둘의 차이점에 대해 알아봤습니다. 1. malloc은 라이브러리 제공 함수로, stdlib.h 을 include 해주어야 사용 가능하지만, new는 기본
jhtop93.tistory.com
'👩🏻💻기초지식 > C++' 카테고리의 다른 글
[C++] auto 키워드 (0) | 2023.08.17 |
---|---|
[C++] Call By Value/Address/Reference (0) | 2023.08.17 |
[C++] 메모리 구조 (0) | 2023.08.17 |
[C++] 스마트 포인터 3가지, 언리얼의 스마트 포인터(TSharedRef), TSharedFromThis (AsShared, SharedThis) (0) | 2023.05.09 |
[C++] #pragma pack을 이용한 구조체 크기 지정 (0) | 2023.02.26 |