Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的内存泄漏+;函数,visual studio 2012,链接列表_C++_Visual Studio 2012_Memory Leaks_Linked List - Fatal编程技术网

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

C++ C+中的内存泄漏+;函数,visual studio 2012,链接列表,c++,visual-studio-2012,memory-leaks,linked-list,C++,Visual Studio 2012,Memory Leaks,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

请有人帮助解决这个内存泄漏问题! 在我的
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结束函数,因此永远不会执行删除操作

您最好像这样使用std::shared\u ptr

#include <memory>
struct Data
{

};
std::shared_ptr<Data> Test()
{
    Data* data = new Data();
    std::shared_ptr<Data> ptr(data);
    return ptr;
}
#包括
结构数据
{
};
标准::共享测试
{
数据*数据=新数据();
std::共享的ptr(数据);
返回ptr;
}
呼叫结束时,ptr将被释放。
当所有容器都被释放时,数据将被释放

您最好像这样使用std::shared\u ptr

#include <memory>
struct Data
{

};
std::shared_ptr<Data> Test()
{
    Data* data = new Data();
    std::shared_ptr<Data> ptr(data);
    return ptr;
}
#包括
结构数据
{
};
标准::共享测试
{
数据*数据=新数据();
std::共享的ptr(数据);
返回ptr;
}
呼叫结束时,ptr将被释放。
当所有容器释放时,数据将被释放

您是否尝试过放置
delete temp->next,temp->next2,temp->next3,temp之前<代码>返回温度?您是否尝试过放置
delete temp->next,temp->next2,temp->next3,temp之前<代码>返回温度?哦,我的天。。我觉得很轻松,哈哈!非常感谢你!!但是如果我在返回之前删除,那么我不能返回..对吗?你说得对!哦,我的上帝。。我觉得很轻松,哈哈!非常感谢你!!但是如果我在返回之前删除,那么我不能返回..对吗?你说得对!