窥探opencv中的内存管理方式(之一)

         作为一个图形处理库,opencv的内部需要大量的内存空间,如何高效的使用这些内存空间十分重要。本文通过阅读../module/core/alloc.cpp源文件(opencv 2.4.4版本),来一探opencv中的内存管理方式。需要说明的是,上述源文件中包含了两种管理方式,而opencv目前只使用了其中一种最简单的方式,本文只对这种简单的方式进行了讨论(这就是题目中之一的原因)。在以后将会讨论另一种管理方式,这将会在之二中进行。

1 函数的声明 

纵观opencv内部,所有的内存空间都是通过自定义的函数cvAlloc()和cvFree()来完成的,这两个函数的声明如代码1所示:

代码1:
/* <malloc> wrapper.
   If there is no enough memory, the function
   (as well as other OpenCV functions that call cvAlloc)
   raises an error. */
CVAPI(void*)  cvAlloc( size_t size );

/* <free> wrapper.
   Here and further all the memory releasing functions
   (that all call cvFree) take double pointer in order to
   to clear pointer to the data after releasing it.
   Passing pointer to NULL pointer is Ok: nothing happens in this case
*/
CVAPI(void)   cvFree_( void* ptr );
#define cvFree(ptr) (cvFree_(*(ptr)), *(ptr)=0)

       这两个函数的声明在../modules/core/include/opencv/core/core_c.h文件中。其中CVAPI是一个宏,将这两个函数进行了如下定义:

调用方式:__cdecl,

dll输出函数,

编译方式:c方式

通过代码1可以看出,cvFree

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值