目前,auto_ptr在程序中使用的越来越多了,在这里就不对其使用进行详述了,针对自己最近使用的情况在容易出问题的地方做一下说明:
if (m_CurrentJob.Tasks.size() > 0)
{
std::auto_ptr<PrintJob> pJob(new PrintJob(m_CurrentJob));
BOOL bSucceeded = PostThreadMessage(dwThreadId, WM_NEWJOB, (WPARAM)pJob.get(), 0);
if(bSucceeded)
{
pJob.release();
m_InprintingThreads.push_back(dwThreadId);
}
}
在上面的代码中,使用了智能指针,需要注意的有两个地方:
(1)智能指针只在声明自己的局部区域有效
(2)在本例中,如果没有release掉智能指针,那么在接收消息的线程中是不能够使用智能指针的,使用就会报错
(3)release的作用就是释放指针的控制权
本文探讨了智能指针auto_ptr的基本使用方法,并通过具体实例详细讲解了使用auto_ptr时需注意的关键事项,包括作用域限制及在特定场景下的正确释放方式。
2214

被折叠的 条评论
为什么被折叠?



