关于设置此 Mat 容器,pinPtrArray 是什么?
What is pinPtrArray with respect to setting up this Mat container?
这段代码来自我正在使用他们的库的设备供应商。我无论如何都不是编程专家,需要了解这一点以进行研究项目。
pin_ptr<System::Byte> pinPtrArray;
pinPtrArray = &e->GetImageData->dataRawPixels2Byte[0];
Mat im (e->Width, e->Height, CV_16U, pinPtrArray);
有人知道pin_ptr<System::Byte>
是什么吗?此外,将其实现到 Mat 容器中有什么作用?如果有人能解释一下,将不胜感激。
Here你有详细的解释pin_ptr
。在 C++/CLI (.NET Framework) 的托管世界中,堆中(内存中)的对象由垃圾收集器管理。它可以移动对象以防止内存碎片。如果对象超出范围,它也可以删除对象。当您在本机环境中使用托管内存时(这里 Mat
是本机对象,e
是托管的)您必须 "pin" 此托管对象以防止指向的对象继续移动托管堆。现在您可以安全地使用 pinPtrArray
指向的数据了。垃圾收集器不会在运行时移动它。
这段代码来自我正在使用他们的库的设备供应商。我无论如何都不是编程专家,需要了解这一点以进行研究项目。
pin_ptr<System::Byte> pinPtrArray;
pinPtrArray = &e->GetImageData->dataRawPixels2Byte[0];
Mat im (e->Width, e->Height, CV_16U, pinPtrArray);
有人知道pin_ptr<System::Byte>
是什么吗?此外,将其实现到 Mat 容器中有什么作用?如果有人能解释一下,将不胜感激。
Here你有详细的解释pin_ptr
。在 C++/CLI (.NET Framework) 的托管世界中,堆中(内存中)的对象由垃圾收集器管理。它可以移动对象以防止内存碎片。如果对象超出范围,它也可以删除对象。当您在本机环境中使用托管内存时(这里 Mat
是本机对象,e
是托管的)您必须 "pin" 此托管对象以防止指向的对象继续移动托管堆。现在您可以安全地使用 pinPtrArray
指向的数据了。垃圾收集器不会在运行时移动它。