SFP란? 스택에 대해 공부하면서 설명하지 않앗던 리턴 어드레스와 함께 쌓인 SFP에 대해 알아보자 SFP란? Stack Frame Pointer의 약자이다. 말그대로 스택 프레임과 관련이 있고, 정확히 말하면 상위 스택 프레임의 베이스 포인터를 말한다. 스택 프레임이 하위로 축소되면서 변하는 베이스 포인터가 함수가 끝난 뒤에도 정상적으로 작동하기 위함이다. Study/system 7년 전
해커스쿨.Section 17 Section 17 스택에 저장되는 값들 살펴보기 변수가 스택에 어떻게 저장되는지 살펴보기 위해 아래와 같은 코드를 살펴보자 a -> b -> c-> d 순서로 변수를 선언했기 때문에 a부터 스택에 쌓일것이다. 아래 결과를 살펴보자 예상했던 대로 가장 먼저 선언한 a의 값인 1이 가장 높은 주소에 저장되어있는 것을 확인할 수 있다. 이번에는 int형이 아닌 자료형이 선언될 때 어떻게 선언되는지 살펴보자 우선 1바이트의 크기를 가진 char형을 선언한 코드는 아래와 같다. 결과를 보면 4바이트 할당되어있고, 7이란 값이 들어가 있기는 하다 그러나 07 앞에있는 eb 83 04는 무엇일까? 우리가 프로그래밍을 하다보면 초기화를 안하고 사용하는 경우가 있다 이러한 변수에 값을 넣지 않은채로 출력하게 되면 이상.. Study/system 7년 전
해커스쿨.Section 15 Section 15 스택(Stack) 영역 조금 더 깊게 알기 스택은 LIFO(Last In First Out)이라는 후입선출형 구조를 가지고 있다. 말그대로 마지막에 들어온 것이 먼저 나가는 형식이다. 예를 들어 설명하면 프린터기에 종이를 차곡차곡 쌓아넣으면 가장 마지막에 올라간 종이부터 사용하는 것과 같다고 보면 된다 보통 스택은 위와같이 그리며 아래쪽이 높은주소이다. push를 통해 데이터를 채워나가며 pop을 통해 데이터를 제거해나갈 수 있다. 스택의 위치를 지칭하는 용어는 TOP과 BOTTOM이 있는데 TOP 경우 스택의 최상단. 즉, 가장 최근에 쌓인 데이터를 가리키며 BOTTOM의 경우 가장 아래부분을 가리킨다 TOP과 BOTTOM이 같을 경우 더이상 데이터가 없음을 뜻한다. 스택이 높은주소.. Study/system 7년 전
해커스쿨.Section 14 Section 14 각 영역의 메모리 주소 값 확인해보기 http://g0pher.tistory.com/268 이번 강의는 위 페이지에 나오는 첫번째 사진을 보며 이해하면 좋다 main함수의 주소를 살펴보면 0x00000000에 가까운 주소가 아니다.코드영역의 앞쪽에는 가상메모리가 텅 비어있는 상태로 존재한다. 이러한 영역은 접근시 오류가 발생한다. 이번에는 전역변수와 정적변수가 초기화된 데이터의 주소를 살펴보면 main보다 약간 뒤쪽에 존재한다. 이번에도 전역변수와 정적변수를 선언하지만 이번엔 초기화 하지 않은 상태일 때의 주소를 살펴보자 초기화된 데이터보다 초기화 되지 않은 데이터가 더 뒤쪽에 형성됨을 알 수 있다.또한 초기화된 데이터와는 다르게 정적변수가 더 앞쪽에 형성됨을 알 수 있다. 이번에는 .. Study/system 7년 전
메모리 구조에 대해 알아보자 아래서부터 살펴보자 코드(.text)영역 프로그램의 코드가 저장되는 영역이며 CPU가 코드영역에 저장된 명령들을 하나씩 가져가서 처리한다 데이터(.data & .bss)영역 전역변수와 정적변수, 배열, 구조체 등이 저장되는 영역이며 초기화된 데이터는 .data에 저장되고, 초기화되지 않은 데이터는 .bss에 저장된다 프로그램이 실행될때 생성되어 프로그램이 종료되면 시스템에 반환된다 힙 영역 동적으로 메모리를 할당 할 때 필요한 메모리 영역이다 크기가 유동적이어서 필요에 의해 할당하고 해제할 수 있다 힙 영역은 낮은주소에서 높은주소순으로 할당된다 스택 영역 지역변수와 매개변수(parameter)처럼 짧게 사용되는 데이터를 저장하는 영역이다 스택영역은 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸.. Study/system 8년 전