そこでスマートポインタ使えばもうそんな心配は無用となるわけでBoostの出番です。
boost::scoped_array<char> buf(new char[450000]);

#define BOOST_BIND_ENABLE_STDCALL 
#include <boost/bind.hpp>
boost::shared_array<char> buf(
    static_cast<char*>(HeapAlloc(GetProcessHeap(), 0, 4500000)), 
    boost::bind(HeapFree, GetProcessHeap(), 0 , _1));
率直にstd::vector使えばこんなことをする必要も無いのだがな。