반응형
0. 시작하기
- 맥 운영체제(OSX)에서 작성하였습니다.
- IDE는 VScode를 사용하였습니다. ( 사용법 => https://youngq.tistory.com/category/IDE/VScode)
- 모든 코드는 https://github.com/yekyu94 에 업로드 됩니다.
1. 메모리 구조
C, Java와 같은 언어를 이용한 프로그래밍에 익숙하다면 많이 들어봤고 잘 알고있을 내용일 겁니다.
[ Code, Data, Stack, Heap ] 이라는 3개의 공간에 대해서 간단히 언급 정도하겠습니다. (알고있다면 넘어가도 좋습니다.)
프로그램은 운영체제에 의해서 관리되는 메인 메모리(Ram)의 일부를 할당받아 사용하게됩니다. 프로그램을 사용하는 사용자는 잘 모르지만, 프로그래머가 생성한 변수들은 코드에 따라 할당받은 메모리 이곳저곳에 저장되게됩니다.
무질서하게 배치되는 것은 아닙니다. 위에서 언급한 [ Code, Data, Stack, heap ] 이라는 영역에 적절하게 배치되는데요. 쉽게 본다면 아래와 같습니다.
- Code 영역 : 말 그대로 실행할 코드가 저장되어있는 영역입니다. (기계어 형태로 존재합니다.)
- Data 영역 : 전역변수, Static변수 들이 저장됩니다.
- Stack 영역 : 지역변수, 매개변수들이 저장됩니다.
- Heap 영역 : malloc 함수 등에 의해서 동적으로 할당되어 사용되는 영역입니다.
위의 내용이 중요하지 않다고 생각할 수 있지만, 앞으로 클래스(객체지향), 동적할당 등에 대해서 다루다보면 이러한 메모리 구조를 몰라서 발생하는 문제들을 겪을 수 있습니다.
때문에 앞으로 다루는 포스터에서 위의 메모리 영역에 대한 언급이 있을 수 있기 때문에 앞서 간단히 다루고 넘어가는 것입니다.
2019/01/03 - [프로그래밍/C언어] - C언어 메모리 구조 - 실제 메모리로 확인하기 (1/3)
반응형
'프로그래밍 > C++ - 이론' 카테고리의 다른 글
[C++ 정리] 8. 참조자 (Reference) (2/2) (0) | 2019.08.06 |
---|---|
[C++ 정리] 7. 참조자 (Reference) (1/2) (0) | 2019.08.06 |
[C++ 정리] 5. 네임스페이스 (NameSpace) (1) | 2019.08.05 |
[C++ 정리] 4. 인라인 함수 (Inline Function) (0) | 2019.08.04 |
[C++ 정리] 3. 매개변수 기본값 (Default Value) (0) | 2019.08.02 |