카테고리 없음
금일 TIL
bugmin
2024. 4. 30. 22:59
오늘은 팀프로젝트 일정으로 인해 TIL을 쓸 시간이 촉박하여 간략하게 서술후 차후에 보강하겠음
오늘 배운 가장 중요한 것은
선언은 스택에 쌓인다는 것이다.
메모리 영역은 코드, 데이터, 힙, 스택 영역으로 크게 나눠볼 수 있고 데이터는 static 선언시 들어가는 곳
선언 시에 스택에 쌓여져 위로 올라간다.
반대로 힙의 경우 데이터가 생기면 아래로 내려가게 된다.
힙은 동적할당 즉 new 키워드를 통해 객체를 생성하면 힙에 생성이 되는 것이다.
또한 객체를
Animal cat = new Animal();
로 생성하면 선언을 했으니 cat이라는 변수의 공간이 스택에 생길텐데 이 공간에 Animal 객체가 들어가는 것이 아니라
객체가 있는 주소를 담아둔다.
그 주소가 바로 힙 영역에 있는 실 형태인 객체를 가리키는 것이다.
고로 만일
Animal cat1 = new Animal();
Animal cat2 = cat1;
로 선언하면 복사를 하는 것이 아니라 그냥 스택에 만들어진 cat2 변수 공간에 cat1 객체가 있는 주소가 들어와
둘이 같은 곳을 가치키고 있는 포인터 형태로 기억하면 되겠다.
포인트는
선언시에는 스택에 생기고
new 키워드를 통해 객체를 만들어내면 힙영역에 생긴다는 것
또한 객체를 선언하면 스택에 생긴 변수에는 실형태인 객체가 있는 힙의 주소값이 담긴다는 사실을 인지하면 된다.