C中的strstr()和未初始化的值

时间:2011-09-04 01:51:53

标签: c

我在这里转发了这个问题:

strstr valgrind error

2 个答案:

答案 0 :(得分:1)

我看到的第一个问题是func2没有错误检查。无论是valgrind注意到这一点,还是抱怨其他事情,我都不确定。

如果您知道在所有用例中func2 永远std == NULL调用,那么您不需要 错误检查。但是valgrind无法知道,即使它是真的。检查如下:

func2(str, line)
{
    char * t1 = str, * t2 = str;

    if (str == NULL) return;

    ...
}

有帮助吗?

答案 1 :(得分:0)

我认为问题在于valgrind注意到:

str = realloc(str, ....); //this is within the loop

可以将str设置为NULL(如果realloc()失败)。

看看以下内容是否让Valgrind满意:

char* tmp = realloc(str, ...);
if (!tmp) {
    abort();  // or some other error handling
}
str = tmp;