跳转至

编译参数

g++ 中添加 -fsantize=address,undefined -g 会在运行时显示一些 Runtime Error,如数组越界、栈溢出、除 \(0\) 错误,signed integer overflow 等等。-g 是为了显示调用栈的行号。

-Wconversion -Wsign-conversion 可以检测强转可能导致的问题(如 long long 赋值给 int)。

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