﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-step by step-最新评论</title><link>http://www.cppblog.com/xiaoluoluo/CommentsRSS.aspx</link><description /><language>zh-cn</language><pubDate>Fri, 27 Nov 2009 09:13:58 GMT</pubDate><lastBuildDate>Fri, 27 Nov 2009 09:13:58 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: 散列3</title><link>http://www.cppblog.com/xiaoluoluo/archive/2009/11/27/102070.html#102087</link><dc:creator>OwnWaterloo</dc:creator><author>OwnWaterloo</author><pubDate>Fri, 27 Nov 2009 10:34:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoluoluo/archive/2009/11/27/102070.html#102087</guid><description><![CDATA[研究opencv的内存管理？  如果是为了使用opencv，可以去研究。<br><br>如果是为了研究内存管理……  opencv的内存管理其实很磋……<br>当然，opencv可能只是为了开发一个足够库自身使用的内存管理与动态数据结构而已。就这个需求来说，opencv是达到了。<br><br><br>但&quot;足够库自身使用&quot;不一定就能满足用户的所有需求。<br>而opencv也不提供任何方法让用户扩展它的库。<br>从这方面来说，opencv是相当的鼠目寸光。<br><br><br>比如opencv提供的CvCapture。其内部是有一个C实现的capture接口与capture工厂。<br>可是它不将接口定义暴露给用户。<br>用户需要自己的capture时怎么办？ 等着opencv去支持吗？  那是不可能的。只能自己动手。<br>这个需求还好， 大不了让自己的capture返回image(image or matrix)，然后丢给opencv去处理就可以了。<br>image的格式opencv还算厚道，暴露出来了。<br>用户如果想要实现得好一些，更capture无关，就需要自己再抽象一个capture接口，然后将opencv的capture包含进去 —— 基本就是将CvCapture的代码再实现一遍 —— 因为那短视的opencv没将这个可扩展点暴露出来。<br><br><br><br>如果用户不满意CvMemStorage和CvSeq的行为，哼哼……<br>必须屈服，除非用户想自己重写opencv —— 换句话说，就是放弃opencv。<br><br>CvMemStorage实现的是一个&quot;多次取、整体放&quot;的策略。<br>所有的动态数据结构都将数据存放在CvMemStorage分配的内存上。<br>没有单独释放数据结构中某个元素的方式，只能释放整个Storage。<br>可是opencv没有定义出一个接口，作为CvMemStorage和CvSeq之间的中间层，而是CvSeq直接使用CvMemStorage。<br><br>CvMemStorage本身也不咋嘀。甚至还有一个单次分配大小的上限……<br><br>一句话，opencv需要输出动态数据结构的算法和CvSeq绑死了，CvSeq又和CvMemStorage绑死了，而CvMemStorage又实现得不咋嘀……<br>你要使用opencv吗？请忍受CvMemStorage……<br>相比CvCapture可以绕过去；这个问题几乎无解。<br><br><img src ="http://www.cppblog.com/xiaoluoluo/aggbug/102087.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoluoluo/" target="_blank">OwnWaterloo</a> 2009-11-27 18:34 <a href="http://www.cppblog.com/xiaoluoluo/archive/2009/11/27/102070.html#102087#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>