经历一番折腾,我用deelx.h支持的正则表达式完成了我需要的全部功能,但测试程序的内存开销时,吓了一大跳。deelx.h存在严重的内存泄漏。经过内存泄漏工具的检测,原来是realloc函数的使用出现了问题。我花了一个小时也没能搞定deelx.h中的这个bug。万般无奈,换到了boost:regex库。结果经过简单的程序片段转换,我完成的新版程序功能和原先的完全一样,而且完全没有内存泄漏。
原先我还有一个Perl程序实现了同样的功能。对比Boost::regex的实现以及Perl的实现,Boost内存开销小一些,但Perl速度快很多,二者都没有内存泄漏。网上对deelx.h的好评很多,猜想他们都是在用match功能,一旦用上replace功能,deelx.h就会吃光内存了。其实deelx.h在CodeProject上也获得了很多好评,但同时也被人发现了内存泄漏问题,很奇怪的是这个问题09年10月就被人发现了,作者也知道这事儿,为什么就还没有被修正呢?有机会时我再试试。