>・コンストラクタ内で例外が発生した場合、デストラクタが呼び出されるか
>  (呼び出されるようにコンパイルできるか) は処理系依存。

だから、デストラクタが呼び出されるのは仕様違反だって言ってるんだよ。
デストラクタが呼び出される要件はただ一つ。
オブジェクトが正しく生成されていると言うことだけ。
コンストラクタが例外を出したらオブジェクトは無かったことになるので
呼び出されるはずがない。

placement-newでメモリが解放されないのは、
newがメモリを確保するのではなくすでにメモリの存在している領域にオブジェクトを作るから。

オーバーロードで定義された引数付きnew
ex. void* operator new(size_t s, int)
で割り当てられたオブジェクト例外を出した場合は、対応する引数付きdelete
ex. void operator delete(void* p, int)
が呼び出される。
また、この引数付きoperator deleteは能動的に呼び出すことは出来ない。