在一个demo程序时,发生了栈溢出:
经调试后,发生栈溢出的代码如下:
friend bool operator>(ipv4 const& a1, ipv4 const& a2) noexcept
{
return a2 > a1;
}
一开始觉得这几行代码不会出现什么问题,偶然间发现在调用栈中出现一大堆关于operator>
函数的调用栈,如下图所示:
这时我才警觉到,这不是发生了无限递归调用吗?所以最终定位问题为:代码编写错误导致无限递归调用,进而导致栈溢出。造成无限递归的原因是操作符重载写错了。