opencv作为开源项目,阅读和修改源代码必不可少.
这里列举如何替换opencv的内存分配和释放函数.
opencv架构的很好,所有的内存都是从
void* fastMalloc( size_t size )
void fastFree(void* ptr)
分配和释放,因而,只要修改这两个函数就可以自定义内存管理策略.
这里假设有一个动态链接库叫cplusplus_basic,
其中有两个函数
void * malloc(size_t arg);
void free(void * arg);
1.修改modules/core/src/alloc.cpp(值得一提的是,opencv的fastMalloc自带内存对齐,而且源码写的非常精简)
#include "precomp.hpp"
/*
import memory::malloc
import memory::free
*/
#include <boost/config.hpp>
namespace memory{
BOOST_SYMBOL_IMPORT void * malloc(size_t arg);
BOOST_SYMBOL_IMPORT void free(void * arg);
}
namespace cv
{
/**/
static inline void * ____opencv_Malloc(size_t size){
return memory::malloc(size);
}
/**/
static inline void ____opencv_Free(void * arg){
return memory::free(arg);
}
static void* OutOfMemoryError(size_t size)
{
CV_