0이 아닌 빈 C 클래스 크기 뒤에 숨은 수수께끼
C에서는 빈 클래스가 메모리를 차지하지 않는다는 개념이 보일 수도 있습니다. 직관적이다. 그러나 이 가정은 멤버가 없는 클래스라도 0이 아닌 크기를 나타내는 특이한 동작으로 인해 문제가 됩니다. 이러한 명백한 역설이 존재하는 이유는 무엇입니까?
알다시피 C 표준은 객체와 해당 클래스의 크기가 0인 것을 명시적으로 금지합니다. 이 규정은 잠재적으로 동일한 메모리 공간을 공유하는 고유한 개체를 구별해야 하는 본질적인 요구 사항에서 비롯됩니다.
표준에서는 내용에 관계없이 모든 클래스의 최소 크기가 1이어야 함을 요구하여 이러한 구별을 보장합니다. 이렇게 하면 두 개의 서로 다른 개체가 동일한 메모리 주소를 갖는 것을 방지할 수 있습니다. 이러한 조건은 예측할 수 없고 바람직하지 않은 동작으로 이어질 수 있기 때문입니다.
따라서 클래스에 사용자 정의 데이터 멤버가 없는 경우에도 본질적으로 구현 세부 정보가 포함됩니다. 가상 함수 테이블 및 포인터 멤버와 같은. 이러한 필수 구성 요소는 비록 사용자에게는 보이지 않지만 클래스 크기에 영향을 미치므로 빈 클래스라도 0이 아닌 양의 메모리를 차지하게 됩니다.
위 내용은 빈 C 클래스의 크기가 0이 아닌 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!