【问题标题】:Quetion about C++ Pointers [duplicate]关于 C++ 指针的问题 [重复]
【发布时间】:2017-08-10 02:11:55
【问题描述】:

有什么区别

Class class("Test");

Class *class = new Class("Test");

哪个更好?有区别吗?

【问题讨论】:

标签: c++ pointers


【解决方案1】:
Class class("Test");

这个对象在 stack 上。它将在它所在的函数返回后被销毁。通常,stack 分配比 heap 快。但它的大小是有限的(几 MB,取决于编译器)。

Class *class = new Class("Test");

这个对象在上。用完后程序员应该deleteed。 heap 对大对象很有用(例如,如果你的变量比整个 stack 大,它只能分配在 heap 上),和内存预留。它的大小可以认为是整个内存空间。

【讨论】:

  • 除非给出具体细节,否则最好坚持使用自动和动态存储。堆栈和堆是迄今为止最常见的自动和动态存储实现,但它们并不是唯一的实现,C++ 标准的措辞允许任何遵循定义规则的实现。
  • 值得一提的是,自动分配和动态分配具有不同的生命周期规则。
  • 自动存储,不是“临时存储”
  • 我同意 - 请不要将这种令人困惑和过时的“堆栈与堆”废话传播给新一代!
  • 是的。刚刚发现自己。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 2014-05-13
  • 2023-01-08
  • 1970-01-01
  • 2011-05-21
  • 2011-02-01
相关资源
最近更新 更多