【发布时间】:2017-11-24 08:48:22
【问题描述】:
我定义了一个简单的类:
class A
{
public:
int a;
};
sizeof(A) 是 4,所以我很困惑,当我刚刚定义这样一个类时,公共成员变量 a 存储在哪里?堆栈还是堆?
【问题讨论】:
-
class是一个“蓝图”——您需要一个实例来了解数据的存储位置。此外,这实际上更多的是关于存储持续时间,因为 C++ 标准没有定义“堆栈”和“堆”要求 -
除了 c++ 标准中没有堆栈或堆分配等概念之外,这将取决于该类的实例化方式以及它的内存分配位置。
-
@UnholySheep 那么为什么这个类会占用 4 种类型呢?
-
类型是什么意思? 4 是常规整数的大小。
-
如果 sizeof int 是 4,那么它就是 4,它不会神奇地改变,记住
sizeof在编译时执行它的操作。