いろいろと間違ってる

> for (int i=0;i<length;i++) ptr[i].~T();
> 要するに中身のデストラクタを一つずつ直接呼び出している。

こんなことする必要ない
デストラクタはインスタンスが消滅するまえに自動的に呼ばれる

↓コレはdebug用 みるソースが適切じゃない
> https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a01115_source.html

00078 #ifdef _GLIBCXX_DEBUG
00079 # include <debug/vector> ← コレをみてる
00080 #endif


↓こっちみなさい
https://gcc.gnu.org/onlinedocs/libstdc%2B%2B/libstdc%2B%2B-html-USERS-3.4/stl__vector_8h-source.html
00268 ~vector()
00269 { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); }