内存是否为函数内的创建对象?

时间:2018-05-20 01:40:27

标签: c++ function oop memory

因为对象是从同一个类创建的。每个对象都包含在类中定义的变量,除了在该类的方法中定义的变量。同一个对象的函数变量是共享内存吗?如果我们有一个函数,我们创建一个相同类的对象,那么引用驻留在哪里?是不是也要分享参考?

1 个答案:

答案 0 :(得分:0)

方法与内存使用方面的任何其他函数没有区别:当执行到达它们的声明时创建局部变量,并且(static)它们被销毁,并且在{{3}时回收它们的内存}。 (最迟在函数返回时发生这种情况。)与this对象或其任何成员没有任何关联。具有与方法类相同类型的变量也没有任何区别。

在某种意义上,这确实使内存“共享”:它将被迅速回收并(通常)重用。但这并不特别,并且不要认为它意味着更多:如果一个方法是递归的,或者由多个线程同时调用,每个副本都有自己的本地 - 再次,就像任何其他函数一样。

最后,任何函数或方法都可以动态分配内存;分配对象的生命周期和共享可能与用于引用它的变量的生命周期和共享无关。