책이 c언어 선행되고 하라고는 하는데 첫 단원이 바로 레퍼런스임(c언어 배우긴했으나 학교 수업이라 다 배운 것도 아닌 것 같고 2년정도 지나서 까먹음)
레퍼런스가 메모리 상에 반드시 존재해야 하는 경우는 어떤 경우가 있을까요? 그리고 메모리 상에 존재할 필요가 없는 경우는 또 어떤 경우가 있을 까요? (난이도 : 上)
암만봐도 이해 안되는데 걍 문제가 잘못된 것 같은데 맞나?
책의 뉘앙스가 포인터랑 다르듯이 설명을 해놨는데 예시도 확실하지 않고 스택, 힙, 레지스터 이야기도 없으니 모르겠음
1.주소 값을 따로 가지지 않는 경우(메모리 점유x)- 레지스터에 주소 값을 저장해서 참조해서 값을 부르기 때문에(최적화 이슈)
2.주소 값을 따로 가지는 경우(메모리 점유o)-포인터와 동일하게 작동
레지스터는 직접참조(배운 적 없음)가 가능하긴 하나 코딩할 때 웬만해선 안 사용할 테고 컴퓨터가 알아서 최적화 판단 들면 ram안 거치고 cpu선에서 해결할텐데 이런 경우 판단하려고 문제 내려는 것 자체가 잘못된 것 같다고 생각드는데 어렵다...
책 댓글에도 뭐하나 정해진게 없던데
- dc official App
내가 아까 댓글로 써줬잖아
힙과 스택 개념 안된다고
스택은 선입선출 lifo구조 지역변수 함수 이런거(전역 변수는 계속 쓰는거라 data영역에 들어감) 힙은 malloc이나 자바의 new처럼 객체생성 같은거로 동적 할당하는 것 이렇게 알고 있는데 뭔가 개념이 부족함? - dc App
그건 그냥 일부분이고, 힙과 스택 개념에서 이해하면됨. 내가 아까 글에 댓글 달아줬잖아 힙은 메모리에 저장된다고
힙 스택도 배웠는데 구글링해도 걍 내가 알고 있는 지식이랑 다를게 없는데 뭔가 연결이 안되는 건가 - dc App
힙이 메모리라는 건 앎 - dc App
힙은 단순 말록이 아님. 너는 지금 Heap과 스택의 중요한 개념을 놓치고 있음.
레퍼런스가 메모리상 대상이 존재해야하는 이유는 수명 보장 여부인데 이 관점을 이해 못하고 있음
그렇다면 힙에 영역을 두는건 스택에 두면 쉽게 소멸되니깐 따로 관리하는 거잖아 lifecycle관련한거 말하는 거임? - dc App
보니깐 내가 문제접근을 메모리에 한번 이라도 들어갔냐, 안 들어갔냐로 봐서 스택이랑 힙을 동일선상으로 본 것 같긴한데 - dc App
힙이 하나의 영역이고 힙에 메모리 컨테이너를 두는게 맞는 표현이지 스택에 두면 자동 관리 대상이니까 힙에 두고 참조를 해야 써먹든 말든 살아있을거 아니노무
아하 걍 내가 문제접근 자체를 잘못하고 있었네 ㄱㅅㄱㅅ 드뎌 이해했다 - dc App
아까보니까 스택에서 할당된걸 반환시키게끔 코드를 짯더만
그건 이제 보니깐 내가 잘못 짠 것 같음 그건 제외할려고 - dc App
위에 얘가 말해준걸 쉽게 설명하자면 프로세스(즉 프로그램을 실행시키면) 임의의 가상 메모리 (우리가 아는 힙 스택 코드) 같은 걔만 가지고있는 영역을 운영체제에서 램에 할당해줌 ㅇㅇ 그래서 힙이 메모리에 생긴다는거임