您好,我制作了一个测试程序,以便在以下代码上使用valgrind --track-origins=yes -v ./a.out
时获得有关如何解决问题的帮助,它会返回以下错误;
==13192== 1 errors in context 1 of 1:
==13192== Conditional jump or move depends on uninitialised value(s)
==13192== at 0x4E6CEA6: ____strtol_l_internal (strtol_l.c:438)
==13192== by 0x4005EB: main (in Desktop/a.out)
==13192== Uninitialised value was created by a stack allocation
==13192== at 0x40057D: main (in Desktop/a.out)
这是我的测试程序代码。
char newid[2];
char copyfromid[5] = "12345";
char *test, *extra;
int j, i = 0;
int outputNum;
for (j = 3; j < 5; j++) {
newid[i] = copyfromid[j];
i++;
}
test = newid;
outputNum = strtol(test, &extra, 10);
printf("%d", outputNum);
这只是一个测试程序,可以将
copyfromid
中的最后两个字符转换为正在进行中的较大项目的数字,任何帮助都将非常有用,谢谢。 最佳答案
for (j=3;j<5;j++){
newid[i] = copyfromid[j];
i++;
}
newid [i] =0;
您未添加尾随零,并且newid必须至少为3个字符长
关于c - 使用strtol的内存错误未初始化的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46371147/