我有一个函数可以创建一个新节点,并将其放置在由指针链接的列表中的正确位置。但是,我创建了一个测试并打印了每个节点的地址,发现它是相同的。我不是在叫删除,而是在使用new,所以我想知道我的内存在哪里删除。我在“节点”上调用新的。该代码位于非Node类的类的方法中,但位于同一.h文件中。
呼叫新电话
内存位置:
答案 0 :(得分:1)
在您显示的代码中,N
是一个局部变量,每次您进入和离开该块时都会创建和销毁该变量。它总是具有相同的地址也就不足为奇了。您的代码与此没什么不同:
for (int i = 0; i < 10; ++i)
{
int j = i;
cout << "Value: " << j << " Location: " << &j << endl;
}
循环的每次迭代都会在开头创建j
的新实例,并在结尾处销毁该新实例。即使每个j
具有不同的值,它们也可以都生活在同一个地址,因为它们的生存期不重叠。您可以看到存储在j
中的值无关紧要。因此,这可能还会显示不同的值,但位置相同。
您对new
的使用无关紧要,因为您没有保存它给您的价值。您取消引用并将其丢弃。