线程池函数中是否存在内存泄露,该如何处理
线程池函数中是否存在内存泄露
function()
{
Devadd* adddev=new Devadd;
QueueUserWorkItem(Adddevfuc,(void*)adddev,WT_EXECUTELONGFUNCTION);
}
DWORD WINAPI Adddevfuc(void* pvContext)
{}
如上代码,将一个工作任务加入到线程池时,通过void* pvContext传递任务内容,如何回收这个在堆内分配的内存呢!我试过在function()中末尾用delete,结果报错,因为Adddevfuc需要访问该内存,我又在Adddevfuc中试着用delete回收同样报错。不知该如何解决。
------解决方案--------------------
应该没什么,不过前提是控制的好,要防止再出现像你刚出现过得情况。
function()
{
Devadd* adddev=new Devadd;
QueueUserWorkItem(Adddevfuc,(void*)adddev,WT_EXECUTELONGFUNCTION);
}
DWORD WINAPI Adddevfuc(void* pvContext)
{}
如上代码,将一个工作任务加入到线程池时,通过void* pvContext传递任务内容,如何回收这个在堆内分配的内存呢!我试过在function()中末尾用delete,结果报错,因为Adddevfuc需要访问该内存,我又在Adddevfuc中试着用delete回收同样报错。不知该如何解决。
------解决方案--------------------
应该没什么,不过前提是控制的好,要防止再出现像你刚出现过得情况。