如何创建一个结构的实例,当它不在范围内时,该实例将不会被删除



我正在尝试在C 中创建自定义数据结构,这类似于双链接列表。因此,在类构造函数中,我正在创建一个结构的实例(请参见下面的代码(,但是当我更改范围时,我无法"保存"它。

我试图使用关键字新的新实例,但是当我使用调试器运行程序中时,我会看到我在上一个范围中创建的对象被"优化"。

在以前的范围内,我的意思是当我处于if循环的范围时,然后我输入了另一个if语句,似乎我在第一个中创建的实例已经消失了。

我不确定"优化"实际上是什么意思。我正在使用clion,这是我更改范围时在调试器中显示的信息。

结构的代码为:

struct singleLinkNode {
    int column;
    int data;
    singleLinkNode *nextSingleNode;
};

我的目标是创建一个保持在内存中的结构的实例,直到我删除它或程序结束为止。

预先感谢您!

"优化"表示

编译器没有找到此变量的任何用途,因此它决定不需要并将其从生成的汇编中删除

当您的代码将开始使用此变量(即读取和写作(时,它将不再优化。

另外,您可以关闭编译器优化(在使用-O0标志完成的GCC中(。

正如Igor Tandetnik在注释中指出的那样,new关键字创建一个对象并将其放在堆上。此对象将活在调用delete或您的程序完成之前。
但是,编译器注意到使用new创建的指针从未使用过,因此它将其优化(可能是使用整个对象,但这是未知的(。

最新更新