【问题标题】:Memory alocated for Creating object inside a function?为在函数内创建对象分配的内存?
【发布时间】:2025-11-28 19:25:01
【问题描述】:

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

【问题讨论】:

  • 这真的很令人困惑,我很难看到被问到的内容。您能否发布一些代码来说明您至少在说什么?
  • 编辑您的问题以包含minimal reproducible example

标签: c++ function oop memory


【解决方案1】:

在内存使用方面,方法与任何其他函数没有什么不同:局部变量在执行到达其声明时创建,并且(除非static)它们被销毁,并在execution leaves the block it 时回收它们的内存。 (最迟在函数返回时会发生这种情况。)与this 对象或其任何成员没有任何连接。与方法的类具有相同类型的变量也没有任何区别。

从某种意义上说,这确实使内存“共享”:它将被迅速回收并(通常)重用。但这并没有什么特别之处,而且不要认为它的意义远不止于此:如果一个方法是递归的,或者被多个线程同时调用,则每个副本都有自己的局部变量——同样,就像任何其他函数一样。

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

【讨论】:

  • 先生,你把事情弄清楚了,但有一点我仍然需要回答。下面解释一下