cvStackAlloc提高内存分配速度

减小字体 增大字体作者:沈乐君  来源:本站原创  发布时间:2009-05-08 18:57:45

由于cvAlloc实际上是使用C库函数中的malloc进行内存分配,要调用windows的堆内存分配函数,所以分配的内存速度慢!特别是大量细小内存块的分配和释放(如大量的特征点),要消耗大量时间,为了提高速度,有两个解决方案:
1.    使用OPENCV专门的内存管理程序Memory Storage
2.    使用堆栈进行小内存分配。CvStackAlloc实际上调用的是alloca函数。该函数的特点是,不能用free来释放申请的内存,当它所在函数返回时,申请的内存会自动释放。

例如:

if( buf_size <= CV_MAX_LOCAL_SIZE )
{
	col_buf = (dsttype*)cvStackAlloc( buf_size );
	local_alloc = 1;
}
else
{
	col_buf = (dsttype*)cvAlloc( buf_size );
	if( !col_buf )
		return 0;
}
if( col_buf && !local_alloc )
	cvFree( &col_buf );
return 1;

  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)
   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名:   验证码:

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

      若文章有错误,请将右边打钩通知管理员

关于本站 - 友情连接 - 网站地图 - 我要留言