Open
Description
Setup:
Operating system win10,
usbdk version 1.0.19,
sensor kinect2,
libfreenect2 version 0.2.0 vc2015 64bit(prebuild)
Way to reproduce, leaks few MB per cycle:
libfreenect2::Freenect2 m_rFreenect2Ctx;
libfreenect2::SyncMultiFrameListener* m_pFreenectListener;
libfreenect2::Freenect2Device* m_pFreenectDev;
while (true)
{
libfreenect2::OpenGLPacketPipeline* foo = new libfreenect2::OpenGLPacketPipeline();
m_pFreenectDev = m_rFreenect2Ctx.openDevice(m_szSerial, foo);
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
if (!m_pFreenectDev)
{
continue;
}
m_pFreenectListener = new libfreenect2::SyncMultiFrameListener(libfreenect2::Frame::Ir | libfreenect2::Frame::Depth);
m_pFreenectDev->setIrAndDepthFrameListener(m_pFreenectListener);
if (!m_pFreenectDev->start())
{
continue;
}
m_pFreenectDev->stop();
m_pFreenectDev->close();
delete m_pFreenectDev;
delete m_pFreenectListener;
}
But in oposite, code below doesn't leak(differs type of listiner):
libfreenect2::Freenect2 m_rFreenect2Ctx;
libfreenect2::SyncMultiFrameListener* m_pFreenectListener;
libfreenect2::Freenect2Device* m_pFreenectDev;
while (true)
{
libfreenect2::OpenGLPacketPipeline* foo = new libfreenect2::OpenGLPacketPipeline();
m_pFreenectDev = m_rFreenect2Ctx.openDevice(m_szSerial, foo);
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
if (!m_pFreenectDev)
{
continue;
}
m_pFreenectListener = new libfreenect2::SyncMultiFrameListener(libfreenect2::Frame::Color);
m_pFreenectDev->setColorFrameListener(m_pFreenectListener);
if (!m_pFreenectDev->start())
{
continue;
}
m_pFreenectDev->stop();
m_pFreenectDev->close();
delete m_pFreenectDev;
delete m_pFreenectListener;
}