초보 코린이의 성장 일지

C++ Static 본문

개인 공부

C++ Static

코오린이 2023. 7. 27. 19:53

Static

장점 및 설명

- 함수 외부에서 선언된 static 변수를 전역 변수라고 부르며, 생명주기는 프로그램이 시작될 때 생성 및 초기화되고(초기화는 한번만) 종료될때까지 그 상태 그대로 유지된다. 그 이후 종료되면 소멸한다.
- 지역 변수에 static을 붙이게 되면 자동 주기에서 정적 주기로 변경된다.
- 지역 변수인 static 변수는 함수내에 범위가 종료된 이후에도 해당 값을 유지한다.
- 고정된 메모리를 사용하기 때문에 메모리 측면에서 낭비가 덜하므로 효율적일수 있다.
- 객체를 생성하지 않고 사용가능 하기 때문에 속도가 빠르다.
- 어떠한 타입이든 모든 객체들이 알고 있고 공유할 수 있어야 하는 멤버 변수에 static를 붙인다.
- 멤버 변수는 클래스 내에서 선언만 가능하고 정의는 불가능하다.
- 멤버 변수는 전역 범위에서만 정의(초기화) 할 수 있다.
- 생성자 안에서도 초기화 불가능
- static 멤버 변수는 클래스당 하나씩만 생성된다.
- 클래스가 계속 만들어져도 처음만든 static 멤버 변수를 공유하게된다.

 

단점

- 직접적으로 소멸을 지시할 수 없다.
- static 변수는 공유되기 때문에, 값을 변경할 경우 다른 곳에도 영향을 주게된다.
- static는 오버리이딩이 불가능하다.
- static는 실행시 static 영역에 생성되고, 관리 받을 수 있는 Heep 영역과 달리 관리를 받을 수 없는 영역static 영역에 존재한다.
- 프로그램이 종료될 때까지 반환이 안되기 때문에 데이터가 계속 쌓이면서 사용 공간이 부족하게 될 수 있다.
- 프로그램이 종료될 때까지 반환이 안되므로, 메모리 누수로 인한  Heep 영역에서 메모리 부족 현상 발생.

'개인 공부' 카테고리의 다른 글

C++ Casts  (0) 2024.04.11
짐벌락 (GimBal Lock)  (2) 2023.09.27
C++ malloc, free, new, delete 차이  (0) 2023.07.25
C++ Extern  (0) 2023.07.21
C++과 C#의 차이  (0) 2023.07.18
Comments