Pcrecpp析构函数

问题描述:

int main(int argc, char* argv[]) 
{ 
    std::string s1; 
    pcrecpp::RE re("(.*)"); 
    re.PartialMatch("This is a test progream", &s1); 

    return 0; 
} 

我想比赛结果存入s1,但是当我运行该程序,出现错误:Pcrecpp析构函数

Screen-shot of VS error message and code location

这是堆栈跟踪信息:

stack trace

pcrecpp版本:8.36
编译器:vs2005

+0

您可以显示出现断点的堆栈跟踪吗?如果你加入调用方法或函数,你能确定LocalPcreFree释放哪个指针吗? 这就是说,我的第一个猜测是,这是一个内部pcre错误,这是由于malloc在第一个pcre内部全局调用和free调用时发生的malloc自由定义之间的变化。换句话说,当malloc被调用时,它在调用free时使用了不同的堆。也许改变包含顺序将有所帮助。 –

+0

谢谢。我将改变包含的顺序并重试。我附在下面的堆栈跟踪 – guardiola

我找到了一个更好的方法来解决这个问题。由于pcrecpp.dll将malloc内存,这将导致在Windows上的错误。所以,首先,我建立pcre.dll;然后将pcrecpp文件添加到我的项目中,从而解决内存malloc问题。 使用pcre.8.36为例: 1.使用PCRE文件生成pcre.dll:

pcre_byte_order.c 
pcre_chartables.c 
pcre_compile.c 
pcre_config.c 
pcre_dfa_exec.c 
pcre_exec.c 
pcre_fullinfo.c 
pcre_get.c 
pcre_globals.c 
pcre_jit_compile.c 
pcre_maketables.c 
pcre_newline.c 
pcre_ord2utf8.c 
pcre_refcount.c 
pcre_string_utils.c 
pcre_study.c 
pcre_tables.c 
pcre_ucd.c 
pcre_valid_utf8.c 
pcre_version.c 
pcre_xclass.c 

pcre.h 
pcre_internal.h 
ucp.h 
config.h 
  1. 添加

    pcre_scanner.cpp pcre_stringpiece.cpp pcrecpp.cpp pcre_scanner.h pcre_stringpiece.h pcrecpparg.h
    到我的项目,好!

开始=>