【发布时间】:2015-10-28 10:28:04
【问题描述】:
我最近使用 valgrind 进行了一次完整的泄漏检查,只是发现了这个错误,并且它一直在抛出“条件跳转或移动取决于未初始化的值”。我在这里做错了什么?它一直指向这个函数:
int tldlist_add(TLDList *tld, char *hostname, Date *d) {
if (date_compare(tld->begin, d) > 0 || date_compare(tld->end, d) < 0)
return 0;
char *dot = strrchr(hostname, '.') + 1;
int i = 0;
while (i < sizeof(dot))
{
dot[i] = tolower(dot[i]);
i++;
}
char *temptld = (char *)malloc(sizeof(dot));
strcpy(temptld, dot);
tld->root = addnode(tld, temptld, tld->root);
tld->count++;
return 1;
}
特别是在这一行:dot[i] = tolower(dot[i]);
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
所有毫无意义的选角是怎么回事?您可以从该函数中删除所有强制转换,这对它会更好。仅在必要时施放,否则可能会隐藏潜在问题。
-
如果您有其他问题,请将其作为新问题发布。不要完全更改现有问题,这会使现有答案无效。