C++ 内存泄漏会影响while循环吗?

C++ 内存泄漏会影响while循环吗?,c++,C++,我正在尝试为大学创建一个程序,当用户输入数字1时,将在链表中创建一个新节点,其中的数据是另一个类的对象,如果他们输入5,则可以退出该程序。然而,在我的测试中,当我创建第二个节点时,将其添加到列表中的循环似乎失败了。在我尝试创建第二个节点后,程序没有执行任何操作,这表明了这一点。我认为这是内存泄漏或指针和引用的问题,因为消除循环只会产生分段错误。例如:将创建第一个节点,但在输入第二个节点的数据时,它不接受输入。我输入4,输入,除了终端移动到新行之外,什么都不会发生,即使删除了删除 cout <

我正在尝试为大学创建一个程序,当用户输入数字1时,将在链表中创建一个新节点,其中的数据是另一个类的对象,如果他们输入5,则可以退出该程序。然而,在我的测试中,当我创建第二个节点时,将其添加到列表中的循环似乎失败了。在我尝试创建第二个节点后,程序没有执行任何操作,这表明了这一点。我认为这是内存泄漏或指针和引用的问题,因为消除循环只会产生分段错误。例如:将创建第一个节点,但在输入第二个节点的数据时,它不接受输入。我输入4,输入,除了终端移动到新行之外,什么都不会发生,即使删除了删除

cout << "Please enter the student's number: " << endl;
        cin >> number;
        student* s = new student;
        s = new student(name, department, number);
        list.addNode(*s);
        cout << "There are now " << list.countNodes() << " nodes." << endl;
我看到的第一个问题是:

void list::addNode(students::student& s)
{

next
设置为
temp
后,删除
temp


就在那里。下次尝试使用此对象时,您将尝试访问已删除的内存。

我不得不花费大量精力向下滚动此处并添加注释,这表明代码太多。请把它修剪到有问题的地方。创建一个。您正在使用
new
,然后猛击一个取消引用的指针?为什么?只要把你放回原处,一枪完成,没有指针。如果你的节点(我认为是作业的一部分)需要导入学生记录,使用常规局部变量,只处理复制成本。也许你不能在最后的项目中使用
std::vector
std::list
,但你至少可以用它测试一下,看看你编造的
列表是否有问题。提示:在处理非平凡的代码库时,使用单元测试总是有帮助的,比如,在将组件组装到完整的程序中之前,先建立对组件的信心。提示:不要使用命名空间std
,尤其是使用与
std::list
冲突的
list
之类的名称。当我们要求一个通常的说法是“大量的代码”。这是因为MRE是一种强大的调试技术。通常情况下,在缺陷周围的噪音降低到缺陷变得明显之前,您只进行了部分MRE。在那之后,你要么修复错误,根本不提问题,要么继续在问题中展示完成的MRE,看看是否有人有解决方案或巧妙的解决方法。
void list::addNode(students::student& s)
{
    copy->setNext(temp);
    }
delete temp;
}