<스택이란 - 지역변수 위치> : 함수는 호출해서 사용하고, 함수기능이 끝나면 실행에 제어가 반환된다.(메인함수가 생성시)
메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다.
스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.
스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출합니다.
이러한 스택은 후입선출(LIFO, Last-In First-Out) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출이된다.
스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다
<스택의 장단점>
매우 빠른 액세스
변수를 명시 적으로 할당 해제 할 필요가 없습니다.
공간은 CPU에 의해 효율적으로 관리되고 메모리는 단편화되지 않습니다.
지역 변수 만
스택 크기 제한 (OS에 따라 다름)
변수의 크기를 조정할 수 없습니다.
<힙 - 멤버변수 위치>
메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 ‘그리고 해야만 하는’ 메모리 영역입니다.
힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.(공간이 늘었다 줄었다의 의미)
힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.
<힙의 장단점>
변수는 전역 적으로 액세스 할 수 있습니다.
메모리 크기 제한 없음
(상대적으로) 느린 액세스
효율적인 공간 사용을 보장하지 못하면 메모리 블록이 할당 된 후 시간이 지남에 따라 메모리가 조각화되어 해제 될 수 있습니다.
메모리를 관리해야합니다 (변수를 할당하고 해제하는 책임이 있습니다)
변수는 C언어 realloc() or 자바 new
'개발일지 > 자바' 카테고리의 다른 글
생성자, 생성자의 오버로딩, 접근지정자 (0) | 2022.08.31 |
---|---|
CRUD란 (0) | 2022.08.31 |
Class, 메소드 (0) | 2022.08.30 |
(break, continue, do while, while)문 (0) | 2022.08.29 |
반복문 (for문) (0) | 2022.08.29 |
댓글