I have solved it.
Use tr1::shared_ptr with custom deleter function.
template< typename T >
struct array_deleter
{
void operator ()( T const * p)
{
delete[] p;
}
};
float *pDerVals = new float[Height*Width];
std::tr1::shared_ptr<float> apDerVals(pDerVals,array_deleter<float>());