CppCoreGuidelines NR.6 不要在函数末尾实施清理动作以及 goto exit
14 January 2024
“Don’t place all cleanup actions at the end of a function and goto exit”
理由
goto
很容易导致错误。这个技术是在没有异常之前,用于 RAII 类型的资源、进行错误处理的方法。
坏例子
void do_something(int n) { if (n < 100) goto exit; // ... int* p = (int*) malloc(n); // ... if (some_error) goto_exit; // ... exit: free(p); }
你能找到错误吗?
其他方案