2009-05-05 26 views
4

我有一个只有10个变量的项目列表。但是这些项目有很多代码,我想补充更多。我很好奇这将如何影响我的结构的大小。我的直觉告诉我,每个人都有一个堆栈,但有争论被传递,而我可能没有考虑到我不确定。那么粗略地说,代码添加到我的数据结构中有多少?代码量是否使数据结构更大?

回答

10

代码不会添加到您的结构的大小。

3

与类关联的代码通常不会每个实例重复一次,因此添加代码不应影响您的数组列表的大小。

3

即使您将代码放在与数据相同的一组大括号中,编译器也会将它分离出来并放入不同的存储器部分。

这样,您只需要代码的一个副本 - 没有必要为每个使用它的项目创建一个新副本。

只有在非常大的项目中,编译后的代码的实际大小才成为问题;通常情况下,它并不比源文本大得多。在小程序中,通常最多只有几百K或者一两个兆或两个。现代机器不值得担心。

+0

实际上,编译后的代码通常比源表示要小得多。 – 2009-05-05 06:00:08

1

代码不存储在堆上。

无论您创建了多少个对象,只会将代码放在一个地方。

1

对象工作的类成员函数存储方式不同,它对对象的大小没有影响。在类中的数据成员将成为对象的一部分,并且如果您更改变量的类型,则对象大小将会改变。

例如:

class Test 
{ 
    1. member functions 

    //it does not matter how many functions you have, this section does not contribute 
    // to object size 

    2. member variables 
    //this contributes to the object size, define an int or double etc will change the object size 
} 
1

每个对象不具有它自己的堆栈。堆栈是每个线程/进程,而不是每个对象。

2

对象实例的大小(大部分)是其数据成员的总和。函数成员不是按实例存储的,并且对实例大小没有影响。

你的程序每个线程有一个栈。当一个函数被调用时,堆栈内存被保留给该函数的每个参数和变量,并在返回时被释放。

如果在没有新建的函数中实例化对象,则该对象将存储在堆栈中。如果使用new,则只有引用存储在堆栈中,并且实例本身存储在堆中。

:)