C++ 函数中的内存泄漏,visual studio 2012,链表

memory leak in C++ function, visual studio 2012, linked list

有人请帮助解决这个内存泄漏问题! 在我的 projectInsert() 函数中,我创建了一个 new 指针,在 return 之后,我使用 delete 删除了该指针。但是内存泄漏仍然存在。我究竟做错了什么。请帮忙!

struct HeliostatPointer { double x; double y; double z; double aa; bool Corner; double SB; double spillage; bool intersect; double lw; double lh; double xx; double yy; double distance; HeliostatPointer* next; RV SunRayVector; RV ReflectedRayVector; double incident; double COS; RV NormalVector; HeliostatPointer* next2; HeliostatPointer* next3; };

HeliostatPointer* projectInsert(double ax, double ay, double az) 
{
    HeliostatPointer *temp = new HeliostatPointer;
    temp->x = ax;
    temp->y = ay;
    temp->z = az;
    temp->intersect = false;
    temp->Corner = true;
    return temp;
    delete temp->next, temp->next2, temp->next3, temp;
}

return之后不能删除,必须在return之前删除!

关键字 return 结束函数因此永远不会执行删除

你可以像这样使用 std::shared_ptr

#include <memory>
struct Data
{

};
std::shared_ptr<Data> Test()
{
    Data* data = new Data();
    std::shared_ptr<Data> ptr(data);
    return ptr;
}

ptr会在通话结束后释放。 并且当所有容器都释放后数据才会释放