728x90
2022 / 08 / 04 목
- 메모리 맵 / 메모리 모델
- 디버거 debugger
✔️ 메모리 모델
함수가 실질적으로 움직이는 방법
메모리를 잡는 구조는 cpu / 운영체제에 따라 다르다.
내가 짠 프로그래밍의 함수는 상단 그림처럼 움직이게 된다.
메모리 맵 ( memory map ) , 메모리 모델에는
Globla Area, Heap Area, Stack Area 세 영역이 있으며,
각 영역마다 갖고 있는 성격이 다르다.
1 . Globla Area (전역영역)
프로그램이 시작할때부터 끝날때까지 모든 곳에서 유효한 접근이 가능하다.
즉 어디에서나 접근이 가능하다.
전역영역에는 함수의 명령어 집합 ( instruction set ) 과 전역영역에 선언한 변수들이 들어간다.
2 . Heap Area
data측면 특징
- 기본 데이터 타입이 아닌 data들이 위치
- 어떻게 될지 모르는 애들 , 실행될때가 되어야 알 수 있는 data가 위치
운영방식 특징
- 변수에 이름을 써서 변수명으로 접근하는 것이 아니라, 레퍼런스값을 통해 접근한다.
왜 레퍼런스 값을 통해 접근하냐면, data의 생성여부가 불투명하기때문이다.
- 레퍼런스 값을 stack이나, global 영역의 변수에 저장하여 간접적으로 접근
3 . Stack Area
- stack이란 자료구조의 한 유형
- 선입 후출 FILO 구조 체계를 갖고 있다.
- 함수내에서 선언한 변수들이 들어간다.
🔔추가적으로 알아두면 좋은 개념들
더보기
- compil time binding
- Run time binding
- load time binding
- heap fragmentation
- lnternal f
- external f
✔️ 디버거 debugger
디버거란?
제어권을 디버거로 이관하여 프로그램의 상태를 확인하고, 문제점을 개선하기 위해서 사용하는 것.
간단히 말하자면,
직접 만든 코드가 어떻게 돌아가는지 직접 눈으로 보고 싶을 때
( 야! 메모리에 뭐 있냐 내가 좀 보게 멈춰봐봐 ! ) 하며,
실행 제어권을 갖고 프로그램의 상태를 확인하는 것이다.

디버거의 상태를 보는방법
1 . break point / 중단점
확인하고자하는 코드 라인을 클릭
2 . step over
Funtion 전체를 수행
3 . watch / 감시
변수값을 조사한다
4 . call stack / 호출
현재 호출된 Funtion depth 를 표시해준다.
코딩을 할 때는 반드시 생각을 하고 시작해야 한다.
어떤 함수를 써야 하는지, 그 함수를 어떻게 좋게 사용해야 하는지 try 해야 한다.
코딩을 짜고, 실행해보고 와 된다~ 하며 만들면 땡이라는 생각만 하고 코딩을 끝내면 결코 성장하지 못한다.
( 연봉 1억 못 받는다.😥)
실행이 되면 어떻게 해야 코드를 읽기 좋게 만들고, 범용적인 코드를 만들고,
재사용하려면 어떻게 해야 하는지 등 생각하는 과정을 거쳐야 한다!_!
'🏃♀️ Do it ! > TIL' 카테고리의 다른 글
forEach / map / filter / Arrow / 즉시호출 / time (0) | 2022.08.08 |
---|---|
함수의 메모리 적재 / 가변 파라미터 / 전개 연산자 / 디폴트 파라미터 / Callback / forEach (0) | 2022.08.05 |
함수 / 익명함수 / 임시객체 (0) | 2022.08.03 |
반복문 (0) | 2022.08.02 |
Datatype / 배열 (0) | 2022.08.01 |