我为两个我视为数组的指针分配了足够的内存:
// Allocate memory for both adj and deg
int *adjdeg = malloc(sizeof(int)*n*n);
adj = adjdeg;
deg = adjdeg + n*n - n;
然后我使用bzero
来自 string.h 的GNU 将deg
“数组”中的值初始化为 0(adj
“数组”不需要初始化为它,因为我在读取它之前写入它)。这工作正常,我的程序运行成功,但是每当我从deg
(IE. deg[0]
) 读取时,valgrind 都会报告许多关于使用初始化值的错误。这是我的电话bzero
:
// My bzero call
bzero(deg, n);
如果我删除对 bzero 的调用并使用如下循环,valgrind 会很高兴:
int i;
for(i = 0; i < n; i++)
deg[i] = 0;
有没有办法告诉 valgrind bzero 正在正确初始化内存中的那个区域?我正在使用 gcc 4.6.3 和 valgrind 3.7.0
注意:如果我使用 valgrindmemset
而不是bzero
.