【发布时间】:2012-12-04 18:22:52
【问题描述】:
我在 valgrind 中遇到错误,不知道哪里出了问题。 错误是: valgrind 输出:
==1112== Conditional jump or move depends on uninitialised value(s) ==1112== at 0x402BF0D: realloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
它指出问题发生在第 226 行:
if(reallocate ==TRUE)
{
char** temp_values = NULL;
temp_values = (char**) realloc(theBoard->_values, theBoard->_size_r*sizeof(char*) );
if(temp_values!=NULL)
{
theBoard->_values = temp_values;
} else
{
reportError(MEM_OUT);
return FALSE;
}
int i = 0;
for (i=0; i<theBoard->_size_r; i++)
{
char* temp_values_c = NULL;
HERE( line 226)-> temp_values_c = realloc(theBoard->_values[i], theBoard->_size_c*sizeof(char) );
if(temp_values_c != NULL)
{
theBoard->_values[i] = temp_values_c;
} else
{
reportError(MEM_OUT);
return FALSE;
}
}
// initialize extra memory
if(row_out_bound)
{
init(theBoard,prev_size_r,0);
}
if(col_out_bound)
{
init(theBoard,0, prev_size_c);
}
}
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
如果您使用 --track-origins=yes 运行 valgrind,它会告诉您冲突变量及其分配位置。
-
这周有 Valgrind 更新吗?这是关于我在过去几天内遇到的同样问题的第三个左右的问题。