请问老师关于sizeof一个类实例的问题

来源:8-18 Hack对象模型和虚函数

Osuribaba

2020-04-11

写了个简单的类实例化之后对其进行sizeof,发现windows上mac上不一样
windows:
图片描述
mac:
图片描述
windows下是16我能理解,但是mac下是24就不太能理解了。

我试了一下如下的操作:
mac下

class Parent {};
class Child: public Parent {
  private:
    int _ding1;
    double _ding2;
};

int main(void) {
  Child test1;
  cout << sizeof(test1) << endl;
  return 0;
}

这种情况下输出 16

然后又试了一下,把child中private中的int类型干掉:
mac下

class Parent {};
class Child: public Parent {
  private:
    double _ding2;
};

int main(void) {
  Child test1;
  cout << sizeof(test1) << endl;
  return 0;
}

这种情况输出 8

不太能理解。。。。请教老师

写回答

1回答

quickzhao

2020-04-11

咋们原则上不解决不是课程上的问题;对象模型问题请见我们讲的对齐问题,这里提示你32位系统虚表是个地址表,会占用一个指针的空间。

0
3
Osuribaba
非常感谢!
2020-04-12
共3条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程