代码中可能会遇到这种情况,函数中申请了内存,函数中进行多次判断,根据不同情况返回不同的值,每个return前都需要释放申请的内存。
解决方式:用unique_ptr代管申请的内存,析构时自动释放
void func()
{
char *msg = new char[1024];
if () {
// do something
delete[] msg;
return;
}
else if () {
// do something
delete[] msg;
return;
}
else if()
...
delete[] msg;
}
#include <memory>
void func()
{
std::unique_ptr<char[]> msg(new char[1024];
if (){
// do something
return;
}
else if () {
// do something
return;
}
else ...
}