strchr函数内的Valgrind memcheck错误

时间:2019-05-12 00:45:20

标签: c++ valgrind

Valgrind在strchr函数中报告以下memcheck错误

==5801== Conditional jump or move depends on uninitialised value(s)
==5801==    at 0x34BB32865A: __strchr_sse42 (in /lib64/libc-2.12.so)

我将gdb链接到valgrind可能会遍历他的strchr代码,但是我做不到。我所有的局部变量都已初始化,程序运行正常。我不知道valgrind错误来自哪里

bool 
Graph::CheckValues( cfgs_val_t & cfgs, const char * mval ) 
{ 

    int matched = 1, av = -1, ev = -1; char * mv, * p1, * p2, * p3, * fn, *                args; 
    cfgs_val_t::iterator iter; bool cfg_anyval = false;

    mv = strdup( mval );  
    p1 = mv;
    p2 = p1;
    for( ; ; )
    {
       if( *p2 == '=' )
       {
           *p2 = '\0';
            p3 = strchr( p1, '(' );  
            if( p3 != nullptr )
            {
                return true;
            }
     }
}

除了v​​algrind错误之外,我的代码工作正常

0 个答案:

没有答案