크기 등급의 계산

크기 등급의 계산

메모리 크기에 따라주의 :
1. 가상 함수를 컴파일러가 클래스의 가상 함수 테이블을 만들 필요가 클래스 첫 번째 주소의 가상 함수 테이블에 대한 포인터를 저장하는 데 필요한,
모든 인스턴스 2. 정적 멤버 함수, 클래스 공유, 를 sizeof 계산하지 않는다
3. 일반 정상 또는 정적 함수를 스택에 저장되고, 카운트는 sizeof되지;

class A   //12
{
    public:
            virtual void funa();
            virtual void funb();  //4
            void func();
            static void fund();
            static int si;
    private:
            int num;  //4
            char sex;  //1
};

메모리 정렬 규칙은 Funa () 및 funb ()는 가상 함수 테이블의 선두 어드레스를 구축, 4 바이트의 크기가 0 FUNC () 및 스택에 저장 기금 ()를 오프셋, 그것은) (sizeof의 아니다 계산은, Si를 0 오프셋 NUM 4 바이트 계산된다) 모든 인스턴스 sizeof의을 (공유되지 않는 정적 멤버 함수 성은 오프셋 0에서 1 바이트이고, 상기 데이터 항목은, 전류를 산출 클래스 사이즈 9 전체 배향이며, 성별 3 바이트를 작성 후, (A)의 크기는 12 바이트이다.

추천 도서의 블로그

[1] C ++ 클래스 사이즈 계산 https://blog.csdn.net/fengxinlinux/article/details/72836199
[2]의 상세한 설명은 C ++ 클래스 사이즈 https://blog.csdn.net/longjialin93528/article/details/80160467
[3] C ++ 클래스 바이트 정렬 https://blog.csdn.net/magiclyj/article/details/72922150

추천

출처www.cnblogs.com/hellovan/p/11426622.html