Structure
구조체나 클래스내에는 멤버변수를 선언할 수 있다. 중요한점은 이 멤버변수를 어떻게 선언하느냐에 따라 구조체나 클래스가 차지하는 메모리 공간이 달라진다는 점에 있다.
32bit OS를 기준으로 두개의 구조체를 다음과 같이 선언하겠다.
1 | struct myStruct1{ |
위의 두 구조체는 같은 타입과 개수의 멤버변수를 가지고 있지만 차지하는 메모리가 다르다. 두 구조체의 메모리 구조는 다음과 같다.
위와 같이 myStruct2가 메모리 공간을 더욱 차지하고 있다. 그렇기 때문에 메모리 최적화를 생각해서 구조체나 클래스를 정의할 때 세심하게 작성해야 한다. 그냥 이런게 있구나 하고 알아두자.
추가적으로 구조체의 주소값은 구조체의 첫번째 멤버 변수의 주소값과 동일하다. 위와 같은 사항은 winsock과 같은 네트워크 프로그래밍 코드를 작성할 때 유용하게 사용된다.