跳转至

检查未定义行为

g++ 中添加 -fsantize=address,leak,undefined -g 参数可以检查运行时错误,如各种越界、栈溢出、除 \(0\) 错误,有符号整型溢出

添加 -O2 -Wall 可以在编译时最大程度的检查代码漏洞;

添加这两个参数是调试时首先应该做的。

如果发生栈溢出,注意是否是栈空间限制太小引起的。在 bash 内执行 ulimit -s 524288 可以设置调用栈限制为 512MB