4

我有一个项目数组列表,其中可能只有十个变量。但是这些项目有很多代码,我想添加更多。我很好奇这将如何影响我的结构的大小。我的直觉告诉我每个人都有一个堆栈,但是随着争论的传递以及我可能不认为我不确定的东西。那么,我的数据结构中添加了多少代码?

4

7 回答 7

10

代码不会增加结构的大小。

于 2009-05-05T04:13:12.653 回答
3

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

于 2009-05-05T04:13:46.817 回答
3

即使您将代码与数据放在同一组花括号中,编译器也会将其分开并放在不同的内存部分中。

这样,您只需要一份代码副本 - 无需为使用它的每个项目制作新副本。

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

于 2009-05-05T04:15:29.247 回答
2

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

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

如果您的对象在没有 new 的函数中实例化,则它会存储在堆栈中。如果使用new,栈上只存储一个引用,而实例本身存储在堆上。

:)

于 2009-05-05T05:21:51.100 回答
1

代码不存储在堆上。

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

于 2009-05-05T04:18:06.417 回答
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
}
于 2009-05-05T04:19:18.787 回答
1

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

于 2009-05-05T04:19:44.340 回答