정적함수
static함수는 클래스의 intstance없이도 호출할 수 있다.
따라서 정적 변수와 함께 사용되거나 유틸리티 함수로 사용될 수 있다.
정적 전역 변수 및 함수
파일 내부에서만 접근할 수 있도록 범위를 제한할 때 사용된다.
다른 파일에서 이 변수를 사용하지 못한다.
정적 멤버는 객체와 독립적이기 때문에 특정 객체의 속성이 아닌
클래스 자체의 속성으로 작용한다.
static변수 가장 큰 특징
프로세스의 데이터 메모리 영역에 생성되어 그 이후,
프로그램이 종료될 때까지 그 생명을 유지한다.
또한 선언되는 위치에 따라 'static 전역 변수'와
'static 로컬 변수'로써 프로그램 종료까지 생명을
유지한다는 것은 같지만 각각 다른 특성을 가지고 있다.
함수 바깥에 선언된 변수는 static전역 변수.
함수 내부에 선언된 변수는 static로컬 변수.
mt19937
c++ 표준라이브러리에서 제공하는 의사난수 생성기
랜덤한 수를 생성하는데 자주 사용
프로세스(실행중인 프로그램)의 네가지 메모리 영역
1. Code 영역
실행되는 코드(명령어들)가 저장되는 영역. 프로그램의 로직
(프로그램이나 시스템이 어떠한 작업을
수행하기 위해 따라야 하는 일련의 규칙이나 명령어를 의미)이 저장되는 곳이다.
2. Data 영역
전역변수와 정적변수들이 저장된다.
프로그램이 실행되는 동안 계속 유지되고, 프로그램이 끝날 때 까지
삭제되지않는다.
3. Stack 영역
함수 호출 시 생성되는 지역변수들이 저장되는 영역,
함수 호출이 끝나면 이 함수들은 삭제된다.
4. Heap 영역
동적으로 메모리리를 할당할 때 사용하는 영역, 필요한 만큼 할당하고,
더 이상 필요하지 않을 때 해제해야 한다
로컬 변수
stack영역에 저장된다. 함수가 호출될 떄, 생성되고 함수가 끝나면 사라진다.
동적 메모리
Heap영역에 저장된다. 필요할 때 할당하고, 사용이 끝나면 직접 해제해야 한다.
코드
Code영역에 저장된다. 프로그램 명령어들이 이곳에 있다.
전역변수와 정적변수
Data 영역에 저장된다. 프로그램이 실행되는 동안 계속 유지된다.