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