>>694
構築されたデータは適切に解体されなければならない。
たとえばそのvectorに次のようなクラスを入れることを考える。
struct test
{
    test() :p(new int){}
    ~test(){delete p;}
private:
    int *p;
};
testのインスタンスが構築されるだけで解体されないとメモリリークが起こる。
一般に、クラスは正しく解体されることを前提として設計されているから、
コンテナを書くときは要素を破棄しないといけない。

>というより、メモリを解放してもデータ要素は残るものなのでしょうか?
std::allocator<test> alloc;
test *g = alloc.allocate();
alloc.construct(p);
alloc.deallocate(p);
*gのデストラクタが呼ばれないから、このコードはメモリリークを起こす。