int priority();
int test(std::shared_ptr<String> str, int priority);
调用test函数时,我们可能直接使用test(std::shared_ptr
但是在单个语句的执行中,编译器可能会调整语句的执行顺序,如
- new String
- priority()
- std::shared_ptr
()
这样,如果priority()报错,那么new string申请的内存就泄露了。
所以最好单独std::shared_ptr
test(str, priority())