인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

스택 메모리관련 질문

작성

·

351

0

스택 메모리 강의 24분 12초에서

crash가 나는 이유가 stack을 임의로 사용하고 다시 돌아가야 할 곳을 지정하지 않아서라고

말씀하셨습니다.

이 때 push 할 때 마다 8byte마다 이동해서 라고 하셨는데

8byte가 아니라 8bit 아닌가요?

숫자니까 한 번 이동할 때마다 1byte씩 움직이므로 push를 한 번 할 때마다 8bit씩 움직이는게 아닌지

궁금합니다.

답변 2

1

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

push 1을 한다고 정말 1바이트 숫자 1이 들어가는건 아니고
사실상 push 0x00 00 00 00 00 00 00 01와 하는 것과 동일합니다.
기본적으로 push는 x86 (32비트 프로그램) 환경에선 4바이트(32비트)
x64 (64비트 프로그램) 환경에선 8바이트(64비트) 단위로 움직입니다.
레지스터를 유심히 살펴보면 esp(혹은 rsp)가 4 or 8 바이트 단위로 움직이는 것을 확인할 수있습니다.

0

답변 감사합니다!

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

질문하기