인프런 커뮤니티 질문&답변

김민찬님의 프로필 이미지

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

스택 메모리와 스택 프레임

함수 호출과정 질문입니다

23.10.09 19:36 작성

·

282

·

수정됨

0


안녕하세요.

배운 내용을 다시 공부하면서 실행해본 결과입니다.

함수 호출시에 232바이트만큼

rsp를 이동시키고 rbp를 32바이트만큼 빼서

스택프레임당 32byte와 200byte의 여백을 남기는것을

확인했습니다.

 

컴파일러가 컴파일시에 스택 사이즈를 정하고 저장하는 위치가 어디인지 궁금합니다. (예를들어 스택프레임은 32byte고 중간에 카나리(?)는 200byte라는걸 결정하면, os는 프로그램 실행시 해당 정보를 어떻게 알 수 있나요?)

 

 

 

 


답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2023. 10. 10. 09:11

최대 스택 크기 등은 프로그램을 빌드할 때 설정할 수 있지만
그렇다고 운영체제가 뭔가를 알고 하는 개념이 아닙니다.
특정 스택 메모리 위치 (sp 레지스터가 가리키는)에서 일련의 명령어들을 실행할 뿐
그 정보가 정확한지 유효한지 등은 신경쓰지 않습니다.
문제가 있으면 프로그램이 crash가 나거나 이상하게 동작할 것이고
이런 것을 악용하는게 해킹의 원리입니다.