内存被删除而没有删除调用C ++

时间:2018-12-05 02:33:46

标签: c++ pointers linked-list new-operator delete-operator

我有一个函数可以创建一个新节点,并将其放置在由指针链接的列表中的正确位置。但是,我创建了一个测试并打印了每个节点的地址,发现它是相同的。我不是在叫删除,而是在使用new,所以我想知道我的内存在哪里删除。我在“节点”上调用新的。该代码位于非Node类的类的方法中,但位于同一.h文件中。

呼叫新电话

image

内存位置:

image

1 个答案:

答案 0 :(得分:1)

在您显示的代码中,N是一个局部变量,每次您进入和离开该块时都会创建和销毁该变量。它总是具有相同的地址也就不足为奇了。您的代码与此没什么不同:

for (int i = 0; i < 10; ++i)
{
    int j = i;
    cout << "Value: " << j << " Location: " << &j << endl;
}

循环的每次迭代都会在开头创建j的新实例,并在结尾处销毁该新实例。即使每个j具有不同的值,它们也可以都生活在同一个地址,因为它们的生存期不重叠。您可以看到存储在j中的值无关紧要。因此,这可能还会显示不同的值,但位置相同。

您对new的使用无关紧要,因为您没有保存它给您的价值。您取消引用并将其丢弃。