스택과 힙 승자는..?

kim hyun woo·2022년 7월 15일
2
post-thumbnail

좋은 개발자가 되기 위한 공부.. D-Day 9998..

오늘도 기본에 충실하기 위해 메모리 구조 공부를 해보자!!

메모리를 잘 활용 할 줄 알아야 더 좋은 앱을 만들 수 있다. 왜냐하면 사용자는 용량이 작은 앱을 더 선호하기 때문이다.
그러니 불필요한 메모리를 최대한 줄이는 게 개발자의 몫이다.
어깨가 무거워진다..


스택(Stack)

우선 스택이란 말그대로 쌓는다라는 의미이다.

함수 호출을 하면 거기에 관계되는 파라미터 또는 변수가 스택영역에 저장이 된다.

FILO(First In Last Out) 구조로 먼저 들어온 것이 가장 나중에 인출하게 된다.
또한 함수가 호출이 완료되면 소멸된다.
스택 메모리는 높은 주소에서 낮은 주소로 할당이 된다.

장점

  • 빠른 액세스 가능
  • 변수를 명시적으로 할당 해제 할 필요가 없다.

단점

  • 메모리 크기 제한이 있다.
  • 지역변수만 해당된다.

손은 많이 안가지면 메모리 크기 제한때문에 효율적으로 메모리 영역을 이용하기는 어렵다.


힙(Heap)

힙은 나에게는 접하지 못한 부분이였다.
힙 영역이란 동적 메모리이다.
즉 힙의 영역은 사용자가 관리 할 수 있으며 '그리고 관리 해야만 하는' 메모리 영역이다.

그래서 사용자에 의해 동적으로 할당과 해제가 이루어진다.

스택과 다르게 힙의 메모리는 낮은 주소에서 높은 주소로 할당된다.

장점

  • 변수를 전역으로 액세스 가능
  • 메모리 크기제한이 없다.

단점

  • 상대적으로 느린 액세스 ( 할당과 해제가 느리다)
  • 메모리 관리를 사용자가 해야된다. (할당과 해제의 책임)
  • 운영체제마다 메모리 관리가 다르기 때문에 힘들다.

요놈은 잘 만 쓰면 매우 효율적 일 것 같다. 하지만 메모리 할당과 해제를 직접해야되고 또 한 책임을 져야 되기에 신중히 써야 되겠다.


후기

승자는? ㅋ 모르겠고 패자는 나다.

기본이 가장 중요하지만 기본을 가장 등한시 하게 된다.

다시한번 되세긴다. 기본의 충실하자!! 기본이 되면 좋은 개발자가 반은 된 것이다..!!!
내 생각이지만 ㅎㅎ;

profile
TIL(Today I Learned)

0개의 댓글