CS
클래스(Class)와 구조체(Struct)의 차이
Bastian바스티언
2024. 1. 16. 16:53
클래스(Class)는 상속이 가능한 '참조 타입'이지만, 구조체(Struct)는 '값 타입'으로서 상속을 할 수 없다.
또한 구조체는 스택(Stack) 영역에 할당이 되며 메모리 크기가 작고 한정적이다.
클래스는 힙(Heap)에 할당이 되며 많은 메모리를 가질 수 있다.
하지만 스택은 가비지가 발생하지 않는 다는 장점이 있기 때문에 성능상의 이점이 있다.
또한, 추가적으로 구조체로 선언을 하더라도 힙에 할당이 되는 경우가 있다.
1. 클래스의 멤버로 구조체가 있을 경우 구조체 포함하여 힙에 할당
2. 구조체를 배열이나 리스트로 사용하는 경우 힙에 할당
그 외에도 구조체의 멤버 변수로 클래스가 있을 경우, 클래스는 힙에 할당되고
구초제는 클래스의 메모리 주소값을 가지고 있는 참조 변수만 포함하여 스택에 할당된다.