• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Test Script의 Stack

21.05.08 04:45 작성 조회수 81

0

Test Script의 Stack

이 표현에 대해서 자세하게 설명 부탁 드려요

제가 느낀 바로는, 스크립트 하나당 메모리 공간을 가지고 이 공간이 Stack과 Heap으로 나뉘는 것 같거든요

여태까지 저는 컴퓨터에 달려있는 메모리는 하나의 덩어리로 생각하고 거기서 Stack과 Heap으로 나뉜다고 생각했는데 틀린건가요?

답변 1

답변을 작성해보세요.

0

메모리가 크게 보면 스택과 힙으로 나뉘는게 맞는데요. 스크립트 하나당 스택과 힙으로 나뉘는 것이라고 생각하기는 어려울 것 같고요. 스크립트는 인스턴스가 생기면 다 힙으로 올라가고 그 스크립트 하나당 다시 함수 안에서 스택이 생기는 것이라고 생각하는게 좋을 것 같습니다. 

스택과 힙을 나눈다고 생각해보면 물리적인 구분이라고 보다는 논리적인 구분에 가깝습니다. 강의에서는 그렇게 설명했지만 보통 스크립트 하나에서만 설명했죠. 하나만 있을때는 그렇게 그려도 됩니다.  하지만 여러개가 있을 경우는 아래 그림에 있는 상황에 가깝습니다. 

스택을 조금 더 설명하자면 스택은 함수에 붙어 있는것과 마찬가지입니다. 

함수가 실행될때 스택이 생겨나는데 이것이 힙과 적용되는것이 구조가 틀려서 스택과 힙이라고 구분한 것이고요.  함수가 실행될때 그 함수에 따른 스택이 원래 하나씩 생겨납니다. 

함수안에서 함수를 부른다고 생각했을때 스택이 다시 생겨나고요. 그리고 함수가 끝나면 스택이 사라집니다. 물리적으로 구분되었다고 생각하시지 마시고 논리적으로 구분되었다고 생각하시는게 좋겠습니다.  메모리의 어느만큼을 스택으로 쓰겠다고 정하고 힙으로 쓰겠다고 프로그램이 정해서 사용하는 것입니다. 

스택안의 값타입, 스택안의 참조타입, 힙안의 값타입, 힙안의 참조타입 이렇게 네가지를 구분해서 동작하는 것을 아시면 됩니다. (이미 아실거라고 생각하고요) 이것이 전체적으로 돌아가는 것을 알아보는 것은 이전에 보여드린 그림을 참조하시면 좋을 것 같습니다. 

이 그림에서 보시면 파란색이 전부 힙이고요. 스타트함수 안에서 스택이 노란색으로 생겨납니다. 사실 이렇게 그림을 구분해 놓았지만 이건 논리적인 구조가 되게 됩니다. 메모리가 숫자에 따라서 올라가는 사각형의 메모리의 나열이니 이건 선형구조가 되는데  그 물리적인 구조 안에서 논리적으로 아래와 같이 구분해서 사용하는 거니까요