如何防止编码器返回局部变量作为参考?
示例 1
我有时会犯这样的错误:-
int& getStaticCache(){
int cache = 0; return cache; //<--- dangling pointer
}
正确的代码是:-
int& getStaticCache(){
static int cache = 0; return cache; //OK
}
示例 2
另一种情况是:-
std::vector<Protocol>& getInternalController(){ .... some code .... }
std::vector<Protocol>& getController(){
std::vector<Protocol> controller=getInternalController_();
return controller; //<--- dangling pointer
}
正确的代码是:-
std::vector<Protocol>& getController(){
return getInternalController_(); //<--- OK
}
可能只有我一个人,因为我对 C++ 不够熟练。
然而,这些事情每 3 个月发生一次,尤其是在糟糕的时候。
问题: 什么编程技术/设计模式/软件工程术语/C++ 魔法/工具/插件可以帮助我减少这种特定类型的错误发生率?
我正在使用 Visual Studio。