C++ Vector와 자유영역
##Vector와 자유영역
주소
- 우리가 메모리에 저장하는 모든 변수는 주소가 있다.
- 보통의 경우 int는 4바이트, char은 1바이트 등등
- 따라서 프로그램에 존재하는 객체들은 각기 다른 메모리 크기와 주소값을 갖게된다.
##Vector와 자유영역
스트림이라고 하면 제트 스트림란 단어가 먼저 떠오른다. 꽤나 잘 써지던 가성비 좋은 펜이어서 종종 사용했었던 기억이 난다. 스트림은 흐름이라는 말이다. 우리가 키보드를 통해 컴퓨터에 입력하고 컴퓨터에서 화면에 글을 출력해주는 과정이 모두 스트림이다.
물이 흐르는 수도관처럼 입력과 출력 스트림에는 규격이 있고 일련의 규칙이 있다. 수도관을 흐르는 물처럼 입 출력 통로에는 바이트 스트림이 흐른다.
프로그램에서 에러는 해당 프로그램을 중단시킵니다. 게임이 에러 때문에 실행되지 않는 것처럼. 에러는 프로그램의 실패입니다. 프로그램이 미처 예상치 못한 상황이 생겨서 대처하지 못한 결과입니다.
그렇다면 에러는 항상 나쁜 걸까요.
메모리의 실체는 램이다. 실제 물리적인 공간은 램이고 운영체제가 이 램을 활용하는 가상공간이 메모리다. 메모리는 4가지 영역으로 구성된다. 용어가 낯설게 느껴져도 괜찮다. 스택, 힙, 자유 공간, 등이 있다.
정적 할당된 메모리는 스택에 위치한 메모리인데, 이 메모리는 프로그래머가 신경쓸 필요가 없다. 여기에 할당된 메모리는 프로그램이 끝나면 다시 자유공간으로 돌아가는 메모리이기 때문이다.
프로그래머의 메모리 사용에 대한 자유도를 주어 상황에 맞게 유용하게 사용하기위해서 동적 할당이 나왔다. 동적 할당이란 프로그래머가 직접 자유 공간 메모리를 사용하는 것을 말한다. 자유공간 메모리를 힙에 가져오는 것이 동적 할당이다.