假设我有一个名为Node的结构,如下所示:
struct foo
{
foo *next;
int aNum;
};
如何在C ++中创建这个“实例”(例如在main方法中)?我环顾四周,看起来好像我会这样做
foo name;
但在我看来好像我应该首先分配空间。有人可以解释(没有必要做长的解释)
答案 0 :(得分:3)
foo name;
是这样做的方法。这将在堆栈上为它分配存储空间,这称为静态分配(除非变量是全局变量,这意味着它将在程序可执行文件本身中分配)。
如果要动态分配(通常不需要在C ++中执行此操作),请使用std::unique_ptr<foo> name = new foo;
或std::shared_ptr<foo> name = new foo;
。另请参阅std::unique_ptr
reference和std::shared_ptr
reference。
答案 1 :(得分:2)
如果您像这样定义实例,则它是自动存储持续时间的对象。这意味着编译器会为您生成代码,负责为该对象分配和释放内存。
此方法有局限性。以这种方式创建的对象的生命周期始终绑定到周围函数或拥有对象的生命周期。此外,如果对象是函数内部的局部变量,它通常会在堆栈上分配,而堆栈的大小通常非常有限。