调试缓冲区溢出导致的seg错误

时间:2016-04-06 18:20:03

标签: c debugging if-statement segmentation-fault

我有以下代码:

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");

然后我永远不会打印出来&#34; Buffer Overrun&#34;

那么,如何调试呢?

仅在启用优化(无调试模式)时发生seg错误

1 个答案:

答案 0 :(得分:0)

你在某处有UB。 “在调试中工作,但不是发布”,或者相反,是一个巨大的未定义行为标志。

使用调试器检查所有参数:)