是否可以为 OpenCV 2.3.1 设置自定义分配器?我创建了一个内存池,我希望 OpenCV 使用该池来满足它的需要。
那可能吗?如果是,怎么办?
更新:
自上次回答以来,我取得了一些进展,但我仍然有一些问题。这是我现在的代码:
CvAllocFunc allocCV()
{
return (CvAllocFunc) MEMPOOL->POOLalloc(sz);
}
CvFreeFunc deallocCV()
{
return (CvFreeFunc) MEMPOOL->POOLfree(ptr);
}
...
cvSetMemoryManager(allocCV(),deallocCV(),data);
现在,我的问题是,我怎样才能访问我想要分配的数据的大小和指针,然后再解除分配?
刚刚发现:我使用的OpenCV版本(2.3.1)在使用cvSetMemoryManager时会报错。原因在于它的源代码:
void cvSetMemoryManager( CvAllocFunc, CvFreeFunc, void * )
{
CV_Error( -1, "Custom memory allocator is not supported" );
}
我对此感到非常失望。我想我不能再在 OpenCV 中使用自定义内存池了!