为什么这种初始化不起作用?

时间:2015-11-20 20:21:45

标签: c++ pointers

我有一个名为Node的结构。 Node接受double并将其存储到名为value的变量中。

我正在尝试制作一个新结构。我的第一个例子有效,但第二个例子没有。第二个示例没有给出编译器错误,它构建得很好,但是当我稍后尝试从节点访问某个值时,它会给我-9.25596e+061

此代码可以正常工作:

Node *firstNode; 
Node *newNode = new Node(value); 
firstNode = newNode; 

此代码不会:

Node *firstNode; 
Node newNode(value); 
firstNode = &newNode;

我可以使用前三行代码,但我想知道为什么其他代码不起作用。是根本错误还是语法略有偏差?

1 个答案:

答案 0 :(得分:3)

局部变量是automatic - 当函数返回时它们超出范围,并且对它们的任何进一步访问(如你所做的那样通过指针)是未定义的行为

new免费商店上分配内存,这与范围或生命周期无关。它只能在程序退出时由delete或操作系统释放。