【发布时间】:2016-07-27 08:05:10
【问题描述】:
我有以下代码:
if (destIndex < destLen && srcIndex < srcLen)
dest[destIndex++] = src[srcIndex++];
这段代码运行良好。
如果我删除 if,那么代码就会崩溃。
如果我然后运行以下代码
if (destIndex < destLen && srcIndex < srcLen)
dest[destIndex++] = src[srcIndex++];
else
fprintf(stderr, "Buffer Overrun\n");
然后我永远不会打印出“缓冲区溢出”
那么,如何调试呢?
段错误仅在启用优化(无调试模式)时发生
【问题讨论】:
-
你在某处有 UB。祝你好运...
-
显示MCVE。问题出在您未显示的代码中。
-
@Jacko
destIndex正在变成 >=destLen和/或srcIndex正在变成 >=srcLen在某个地方,不知何故......(假设destLen和srcLen实际上对应dest[]和src[]中的元素个数) -
@MartinJames Bingo!!! destIndex 为负数。将您的评论移至答案,以便我给您满分:)
-
我认为我不应该为此获得满分,但是,好的;)
标签: c debugging if-statement segmentation-fault