스택의 크기는 컴파일 타임에 결정되므로 정적 할당 영역 이다. 스택의 크기는 런타임에 크기가 변할 수 있는 동적 항당 영역이다. 스택의 크기는 컴파일 타임에 결정되므로(예로 100) 정적할당이면서, 런타임에 스택에 데이터가 저장됨에 따라 스택의 크기는 10, 20, 30, 20, 15 이런식으로 변할 수 있으니까, 동적 할당 영역이기도 하다. 특정 책에서는 스택을 동적 할당 영역이라고 설명하고, 특정 대학 강의에서는 스택은 컴파일 타임에 크기가 결정된다고 설명합니다. 해당 강의에서는 이에 대한 내용이 없는 것 같은데, 어떤 설명이 맞는건지 궁금합니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 강의에서는 int result = MultiplyBy(b, a); 부분을 어셈블리로 조사를 한다면, push부분이 나와야 하지만 나타나지 않고 대부분 어셈블리적힌 부분이 다른 거 같은데 왜 다른지 모르겠습니다.
반갑습니다. 앞선 그림 자료들에선 프로그램에 할당된 메모리 안의 각각의 구성 메모리들 예를 들면 스택과 힙 그리고 텍스트 세그먼트 등... 이것들은 서로 연접해있는 걸로 그려져 있는데요, 실제 빌드 후 실행하면 각각 메모리들간의 차이가 상당히 큰 듯합니다. 그만큼 파일의 크기가 큰 것으로 해석해서 각 메모리요소들은 서로 연접해있다고 봐야 할지, 그림은 이해를 위한 예시일 뿐이고 각 요소들은 서로 연접해있다고 보장할 수는 없는지 궁금합니다. 고맙습니다!
스택이 상하나 좌우로 스크롤 했을 때 이동을 하는 기능이고 패딩이 상하좌우 여백을 글씨 길이에 맞춰서 조절이되는 기능이에요! 수업 내용에는 스택만 설명이 되어 있지만 스택이 설정되면서 패딩이 같이 선택이 되기 때문에 강사님이 설명하신 스택부분은 스택과 패딩이 합쳐진 거라고 보시면 돼요!
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요. 현재 강사님의 강의를 수강중인 학생입니다. 스택과 메모리강의를 방금 보았는데 이해가 안되는 부분이 있어 질문 남깁니다. 먼저 사진 1입니다. 사진 1은 강의대로 짠 코드를 f5를 눌러 디버그 했을때의 사진입니다. 현재 rsp는 0x60fe38이라고 나와있습니다. 질문1. 현재 0x60fe38에 들어있는 값은 의미가 있는 값인가요? 그 후 디버깅을 더 진행시켜봤습니다. 사진2 입니다. 사진 2는 MAX라는 함수를 실행시키기 전까지 (위에 push를 모두 실행하기까지) 디버깅을 진행한 사진입니다. 현재 0x60fe38이후 0x60fe30에 rax값이, 0x60fe28에 rbx, 0x60fe38에 5, 0x60fe38에 1이 잘 들어가 있는 것을 확인했습니다. 사진 3입니다. 문제의 사진 3입니다. 방금의 상황에서 f11키를 눌러 step into 해보았습니다. 그랬더니 rsp가 0x60fe18에서 0x60fe10으로 바뀌며 0x60fe10에 이상한 값이 들어있는것을 확인했습니다. 질문2 왜 rsp가 0x60fe18에서 0x60fe10으로 바뀐 건가요? (왜 stack이 한단계 더 쌓인건가요?) 질문3 사진 3에서 0x60fe10에 들어있는 값은 뭔가요? 질문4 사진으론 없지만 함수에서 빠져나가니 rsp가 0x60fe10에서 다시 0x60fe18로 바뀐것을 확인했습니다. 왜인가요..? 이해력이 부족하여 질문이 많습니다.. ㅠㅠ 죄송합니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요. 항상 강의 잘 듣고 있습니다 :) 다름 아니라 데이터 갖고 놀기 섹션의 유의사항 항목에서 다음과 같은 궁금증이 들었습니다. 레지스터는 종류가 엄청 많지 않을텐데, 만약 지역 변수가 100개라면 어떻게 관리가 될까? 이것을 Push와 Pop으로 관리하고 있을까? 해서 디스어셈블리로 확인 해 보았는데.. hp 라는 표현을 통해 식을 처리하고 있는 것을 볼 수 있었습니다. 여기서 궁금한것은 따로 .data 영역이나 .bss 영역처럼 변수를 생성 해 준 것 같지 않은데, 어떻게 hp 를 특정 주소로 인식하여 계산을 처리하는 지 입니다. 또, 스택을 용도에 맞게 사용하고 나면 깨끗이 비워주어야 하는 것으로 이해하고 있는데 코드를 보았을 때에는 hp를 스택에서 제거하지 않는 것 처럼 보입니다... 이것은 어떻게 된 영문일까요.. ㅠㅠ 게임 개발에 대해 배우러 왔다가 어셈블리어를 공부하고 나니 궁금한 점이 막.. 생겨버리네요 ㅠㅠ 항상 감사합니다 :) - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.