删除指向同一对象的所有指针

时间:2018-04-23 14:15:58

标签: c++

我有这样的事情:

void foo(){
Student *a0 = new Student();
Student *a1 = new Student();
Student *a2 = new Student();
Student *a3 = new Student();
}

我有另一个功能

void foo2(){
Student* delStudent;
delStudent = ll.ReturnStudentToDelete(); //this function returns a pointer to delete student
delete delStudent ;
delStudent = NULL;
}

假设,ll.ReturnStudentToDelete()返回a2的地址,上面的代码会删除此对象。我也想设置指针' a2'为NULL。但我不知道如何检索a2指针以便将其设置为NULL。

目前我有2个指针(a2和selStudent)指向同一个对象

另外,我被要求使用operator*() and operator->()。但我根本没有这样做,所以我尽力做到最好。您能否发布一个简单的模板示例,说明如何实施。我知道上面的原始指针不好用

1 个答案:

答案 0 :(得分:3)

根据您的代码,您执行此操作:

void foo(){
    Student *a0 = new Student();
    ...
}

实际上,你从不存储指针。实际上这意味着当你调用foo时,你会立即泄漏你创建的所有内存,因为你没有存储这些指针。 ll.ReturnStudentToDelete()函数不仅不能获得a2指针,它将无法获得任何相关指针。

您应该首先看看是否可以避免使用指针。例如,也许你的代码可以这样工作:

Student someStudent;
...
someStudent.doSomething();

或者如果你真的需要一群学生:

std::vector<Student> groupOfStudents;