pcre匹配长字符串导致stack overflow问题的解决
今天遇到了这个问题(如题),网上查了一下,基本没有找到什么解决方法。最后在王俊的Blog
(http://blog.vckbase.com/wangjun/archive/2009/10/28/39611.html)里看到一句话“默认PCRE是以递归方式调用match, 当需要处理的字
符串比较大时,堆栈就会溢出(stack overflow)。”,并且他给出了修改“pcre的内存分配开关,自己手动编译”的方法,我试了一下,问题
果然解决了,总结如下:
解决方法:不要使用网上提供的已编译好的pcre库(lib和dll),自己下载pcre源文件,修改,编译。
(1)让pcre默认编译为在堆中分配内存:
打开pcre源文件目录,在config.h里,加入如下宏定义:
#define NO_RECURSE
附:pcre源文件的下载地址
http://www.psyon.org/projects/pcre-win32/index.php
(2)如何使用vc编译pcre?
我下载的是pcre7.9的源代码。
建立一个VC的DLL工程,去掉原有的包含文件,将PCRE的所有pcre_*.c都加进去, pcre后面没有_的不要加, 后缀名是.cc的不要加。
增加工程预编译宏 HAVE_CONFIG_H,不使用预编译头 Not Using Precompiled Headers。
这样就可以在 VC 上编译通过了,我在vc9(vs2008)上编译通过,记着要用release版的。
[日志分享]
[日志信息]
该日志于 2010-04-13 23:02 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “pcre匹配长字符串导致stack overflow问题的解决” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!! (尊重他人劳动,你我共同努力)
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢