是否可以为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了!