> 백엔드 개발 > C++ > 본문

빈 C 클래스의 크기가 0이 아닌 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-03 15:18:30
원래의
396명이 탐색했습니다.

Why Do Empty C   Classes Have a Non-Zero Size?

0이 아닌 빈 C 클래스 크기 뒤에 숨은 수수께끼

C에서는 빈 클래스가 메모리를 차지하지 않는다는 개념이 보일 수도 있습니다. 직관적이다. 그러나 이 가정은 멤버가 없는 클래스라도 0이 아닌 크기를 나타내는 특이한 동작으로 인해 문제가 됩니다. 이러한 명백한 역설이 존재하는 이유는 무엇입니까?

알다시피 C 표준은 객체와 해당 클래스의 크기가 0인 것을 명시적으로 금지합니다. 이 규정은 잠재적으로 동일한 메모리 공간을 공유하는 고유한 개체를 구별해야 하는 본질적인 요구 사항에서 비롯됩니다.

표준에서는 내용에 관계없이 모든 클래스의 최소 크기가 1이어야 함을 요구하여 이러한 구별을 보장합니다. 이렇게 하면 두 개의 서로 다른 개체가 동일한 메모리 주소를 갖는 것을 방지할 수 있습니다. 이러한 조건은 예측할 수 없고 바람직하지 않은 동작으로 이어질 수 있기 때문입니다.

따라서 클래스에 사용자 정의 데이터 멤버가 없는 경우에도 본질적으로 구현 세부 정보가 포함됩니다. 가상 함수 테이블 및 포인터 멤버와 같은. 이러한 필수 구성 요소는 비록 사용자에게는 보이지 않지만 클래스 크기에 영향을 미치므로 빈 클래스라도 0이 아닌 양의 메모리를 차지하게 됩니다.

위 내용은 빈 C 클래스의 크기가 0이 아닌 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!