编译参数
在 g++
中添加 -fsantize=address,undefined -g
会在运行时显示一些 Runtime Error,如数组越界、栈溢出、除 \(0\) 错误,signed integer overflow
等等。-g
是为了显示调用栈的行号。
-Wconversion -Wsign-conversion
可以检测强转可能导致的问题(如 long long
赋值给 int
)。
如果发生栈溢出,注意是否是栈空间限制太小引起的。在 bash
内执行 ulimit -s 524288
可以设置调用栈限制为 512MB
。