我正在尝试在C 中创建自定义数据结构,这类似于双链接列表。因此,在类构造函数中,我正在创建一个结构的实例(请参见下面的代码(,但是当我更改范围时,我无法"保存"它。
我试图使用关键字新的新实例,但是当我使用调试器运行程序中时,我会看到我在上一个范围中创建的对象被"优化"。
在以前的范围内,我的意思是当我处于if循环的范围时,然后我输入了另一个if语句,似乎我在第一个中创建的实例已经消失了。
我不确定"优化"实际上是什么意思。我正在使用clion,这是我更改范围时在调试器中显示的信息。
结构的代码为:
struct singleLinkNode {
int column;
int data;
singleLinkNode *nextSingleNode;
};
我的目标是创建一个保持在内存中的结构的实例,直到我删除它或程序结束为止。
预先感谢您!
"优化"表示
编译器没有找到此变量的任何用途,因此它决定不需要并将其从生成的汇编中删除
当您的代码将开始使用此变量(即读取和写作(时,它将不再优化。
另外,您可以关闭编译器优化(在使用-O0
标志完成的GCC中(。
正如Igor Tandetnik在注释中指出的那样,new
关键字创建一个对象并将其放在堆上。此对象将活在调用delete
或您的程序完成之前。
但是,编译器注意到使用new
创建的指针从未使用过,因此它将其优化(可能是使用整个对象,但这是未知的(。