帮小弟我找找程序段中的异常(可能是“返回值是局部变量的引用”)

帮我找找程序段中的错误(可能是“返回值是局部变量的引用”)!以下是朋友问我的一道找错题目。以下代码段有错

帮我找找程序段中的错误(可能是“返回值是局部变量的引用”)!
以下是朋友问我的一道找错题目。
以下代码段有错误,请指出来(很严重的错误!)。
我看了很久,认为是“返回值是局部变量的引用”这个错误。但是我在VC++.NET   2005,能编译通过,并且运行正常。请问是这个错误正确吗?如果不是,真正的错误是什么呢?

class   Complex
{
public:
double   real,   imag;
Complex(double   real   =   0.0,   double   imag   =   0.0)
{
  Complex::real   =   real;
  Complex::imag   =   imag;
}
    };

  Complex&   operator+(   Complex&   a,   Complex&   b)
  {
        Complex   *p   =   new   Complex;
        p-> real   =   a.real   +   b.real;
        p-> imag   =   a.imag   +   b.imag;
        return   *p;
    }

[解决办法]
是内存泄漏。凡new就必须有delete