在一个demo程序时,发生了栈溢出:

经调试后,发生栈溢出的代码如下:
friend bool operator>(ipv4 const& a1, ipv4 const& a2) noexcept
{
return a2 > a1;
}
一开始觉得这几行代码不会出现什么问题,偶然间发现在调用栈中出现一大堆关于operator>函数的调用栈,如下图所示:

这时我才警觉到,这不是发生了无限递归调用吗?所以最终定位问题为:代码编写错误导致无限递归调用,进而导致栈溢出。造成无限递归的原因是操作符重载写错了。

在编写一个demo程序时,发现了一个栈溢出问题,根源在于一个错误的操作符重载函数`operator>`。这个函数由于逻辑错误,引发了无限递归调用,从而导致了栈溢出。经过调试,问题定位为代码编写错误,现在需要修正这个重载函数以防止无限递归的发生。
1万+

被折叠的 条评论
为什么被折叠?



