例子来自于当前一个大型项目。简化起见,代码原理大概是下面的样子。
std::vector<int> test_re(int a)
{
std::vector<int> result;
if (a < 0)
{
return result;
}
result.push_back(a*100);
result.push_back(a*200);
}
int main()
{
auto a = test_re(10);
std::cout << "a.size() = "<<a.size() << std::endl;
}
这段代码运行的很好,也没啥问题。直到有一天,由于某种功能变化,有人把a提前声明了。然后系统就崩了。
本着谁修改就是谁的问题,开发人员懵逼了很久,直到看了test_re的源码.....
--
修改:foliver FROM 124.77.82.*
FROM 124.77.82.*