c++ - 临时对象存储在哪里?

标签 c++ heap-memory temporary-objects stack-memory

temporary objects 是真的吗?存储在动态(堆)内存中?

最佳答案

标准没有为它们强制要求任何内存区域(堆/堆栈),但它们就像局部变量“自动存储”一样,位于表达式的末尾(或绑定(bind)到 ref-to- 时更长) const) 它们被破坏了。

大多数实现会将它们存储在堆栈中,就像局部变量一样。

编辑:

正如 James Kanze 所指出的:在通过 ref-to-const 延长临时对象的生命周期的情况下,它的存储位置在大多数实现中都多少取决于该引用的存储位置。也就是说,在静态存储中引用的情况下,临时文件也将如此(刚刚在 gcc 上确认)。 (尽管恕我直言,虽然这在标准意义上仍然是临时的,但从该词的直观英语意义上来说,这是否是临时的还有待商榷)

关于c++ - 临时对象存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9109831/

相关文章:

java - 如何解决 Kafka Broker 中的网络和内存问题?

c++ - 传递本地创建的 lambda 用于回调,然后超出范围

c++ - 前向迭代器/随机访问迭代器和 `operator*` 临时迭代器

c++ - ios::fmtflags如何在C++中工作?setf()如何工作?

c++ - 无法绑定(bind)超过 1021 个端口

PHP 字符串到 "unsigned long"(来自 C++)

Android游戏编程——堆问题

c++ - 如何在 C++ 中正确递增返回的迭代器?

rust - Rust 中涉及临时对象的销毁顺序

c++ - C++中对象的创建和销毁顺序