개발관련/TIL
내배캠 3주 3일차
hifumialice
2024. 5. 1. 21:16
간단하게 생각해본 힙, 스택 및 클래스 객체 인스턴스
모든 코드는 주소(메모리값)을 갖는다.
클래스를 만들면 클래스의 인스턴스가 힙 메모리에 생성된다.
변수는 스택에 저장되고 스택에 있는 값은 힙 메모리의 주소값을 저장한다. --> c의 포인터 느낌?
힙에 있는 메모리는 무겁기 떄문에 스택에 변수를 통해 힙 영역의 주소값을 저장한다.
따라서 스택에 있는 변수에 접근하면 힙에 있는 값을 이용할 수 있다. --> 조금 조심해야할 부분이 있음
따라서 클래스를 작성할 때 메모리에 주소값이 있다.
클래스를 이용해서 힙에 클래스의 인스턴스가 생긴다. --> 주소값이 생김
그리고 객체(변수)를 생성할 때 스택에 저장공간을 잡고 안에 힙의 있는 주소값을 저장한다.
이 개념을 통해서 Call By Reference가 있고 대척점인 Call By Value가 있다.
reference는 참조한다는 뜻이기 때문에 주소값을 가져가서 수정하면 힙에 있는 것이 수정이 된다.
value는 값만 복사하기 때문에 서로 다른 메모리를 갖는다.
생성자는 왜 필요할까? --> 생성자도 메소드다! (좀 특별한게 문제지만)
새로운 객체(인스턴스)를 만들기 위해서