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会在通话结束后释放。
并且当所有容器都释放后数据才会释放
有人请帮助解决这个内存泄漏问题!
在我的 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会在通话结束后释放。 并且当所有容器都释放后数据才会释放