【发布时间】:2019-05-05 13:09:13
【问题描述】:
我正在尝试在 C++ 中创建一个自定义数据结构,类似于双链表。因此,在类构造函数中,我正在创建一个结构实例(参见下面的代码),但是在更改范围时我无法“保存”它。
我尝试使用关键字 new 创建实例,但是当我使用调试器运行程序时,我发现我在前一个范围内创建的对象已“优化”。
之前的范围是指当我处于 if 循环的范围内时,然后我输入另一个 if 语句,看起来我在第一个中创建的实例已经消失了。
我不确定“优化”到底是什么意思。我正在使用 CLion,这就是我更改范围时它在调试器中显示的消息。
结构体的代码是:
struct singleLinkNode {
int column;
int data;
singleLinkNode *nextSingleNode;
};
我的目标是创建一个结构的实例,该实例一直保留在内存中,直到我将其删除或程序结束。
提前谢谢你!
【问题讨论】:
-
new是正确的方法。 “以前的范围”和“优化”是什么意思?显示一个 minimal reproducible example 来演示这种假定的行为。 -
你真的要单身吗?
-
"所以在类构造函数中,我正在创建一个结构实例(参见下面的代码),但在更改范围时无法“保存”它。 “那为什么不让它成为班级成员呢?无论如何,除非我们能看到您想用它做什么,否则我们无法真正回答您的问题。
-
等一下...您是在循环中创建具有同名的实例吗?复合语句出现块范围(任何用大括号括起来的东西,包括循环和条件的多行主体),但它们应该只在存在名称冲突时才隐藏。在循环之外声明一个数组并将循环实例创建为数组元素是否有效? (编辑:对,对。c++.ahem,“循环外的向量......”)
标签: c++ memory-management