0
以下是函数的一部分。printf防止c中的段错误
l->length[l->cl] = atoi(p->wds[p->cw]);
printf("FD %d\n", l->length[l->cl]);
p->cw = p->cw + 1;
l->cl = l->cl + 1;
printf("prevent from seg fault\n");
instr(p);
如果我删除printf("prevent from seg fault\n");
我得到分段错误,但如果我把它运行,去鸟巢等功能。
所以我的问题只是在一般情况下,为什么会发生这种情况,我知道我没有显示足够的代码,因此您可以看到为什么发生分割,但如果有任何一般性解释,我也有在我的程序中的另一个地方,但最终我可以删除它?
问候Orri(奥瑞)
某处可能存在未定义的行为。一个简短的,完整的样本,表明问题将不胜感激。 – chris
询问“如何防止分段故障”并不是一个有用的精神状态。分段错误是编程错误的结果,并且询问“如何防止错误”是没有意义的。你应该问“如何正确地写XYZ”,事实上,你甚至可以忽略“正确”,因为没有别的。所以只是“我如何使用printf?”。 –
我的猜测是在程序的另一部分覆盖了内存。删除printf并开始删除其他内容,直到问题消失。然后,您可以开始缩小事情发生错误的地方。 – dutt