我有以下代码:
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");
然后我永远不会打印出“缓冲区溢出”
那么,如何调试呢?
段错误仅在打开优化时发生(无 Debug模式)
最佳答案
你在某个地方有UB。 “在调试中有效,但在发布中无效”,或者反过来,是一个巨大的未定义行为标志。
使用调试器检查所有参数:)
关于c - 调试缓冲区溢出引起的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36459275/