0

哪个占用内存, aclass还是 an object?而且,是在那个时候compile还是那个execution时候?

谢谢。

4

3 回答 3

4

在编译期间,内存的布局是一个实现细节——你不需要知道或关心。

然而,在运行时...在 C++ 中,类定义了类型,但(除非您激活允许对类进行有限内省的 RTTI)本身通常不占用任何内存1 - 它们只是构造和销毁对象的框架. 然而,它们的方法——构造函数、析构函数、实例方法和类方法占据了可执行内存的一部分,但编译器可以并且确实优化掉程序中未使用的任何此类方法。

类型的实例(即对象以及int变量之类的基元)在 C++ 中占据了大部分内存,但对于它们的成员函数,它们又引用了它们的类。一个特定类的实例究竟使用了多少内存完全是一个实现细节,您通常不需要关心它。


1即使那样,类本身也不使用内存,但它们的关联std::typeinfo实例使用。但同样,这通常是实现的东西,而不是那些即使是干瘪的程序员也很关注的东西。

于 2011-01-29T19:24:22.387 回答
0

object instance是在执行时占用内存的那个,因为 a是class对象的蓝图。

此外,在 C++ 中有静态变量、局部变量和全局变量,它们也占用内存。

于 2011-01-29T19:36:10.557 回答
0

静态、局部和全局变量存储在 BBS 数据段中,而对象存储在堆或堆栈中。对象是类的实例,而编译器使用类定义通过其类描述创建对象。课堂就像一个“如何自己搭建桌子”的指令,只占用它所写的纸,而一个对象是你自己按照指令制作的真实桌子,占据了真实的空间。

于 2011-01-29T20:56:20.970 回答