哪个占用内存,class
或object
?那是compile
还是execution
时间?
感谢。
答案 0 :(得分:4)
在编译期间,内存布局是一个实现细节 - 您不需要知道或关心。
在运行时期间,但是...在C ++中,类定义了类型但是(除非你激活允许对类进行有限内省的RTTI)一般不占用任何内存 1 - 它们是只是构建和销毁对象的框架。然而,它们的方法 - 构造函数,析构函数,实例方法和类方法占据了可执行内存的某些部分,但编译器可以并且确实优化掉程序中未使用的任何此类方法。
类型实例(即对象以及int
变量之类的基元)占用了C ++中的大量内存,但是对于它们的成员函数,它们会引用它们的类。确切地说,特定类的实例使用多少内存完全是一个完整的实现细节,您通常不需要关心它。
1 即使这样,类本身也不使用内存,但它们关联的std::typeinfo
实例会这样做。但同样,这通常是实现的东西,而不是程序员非常关注的那种东西。
答案 1 :(得分:0)
object instance
是在执行时占用内存的class
,因为{{1}}是对象的蓝图。
此外,在C ++中还有静态变量,局部变量和全局变量,它们也占用内存。
答案 2 :(得分:0)
静态,本地和全局变量存储在BBS数据段中,而对象存储在堆或堆栈中。 对象是类的实例,而编译器使用类定义通过它的类描述创建对象。类就像是一个“如何自己构建表”的指令,它只占用它所写的纸,而一个对象就是你自己根据指令制作的真实表,它占据了真实的空间。