この ATL/COM コードが割り当ての成功をチェックするのはなぜですか? CoGetALloc またはそのような API を介してカスタム割り当てが表示されることを期待していました。標準準拠の C++ ランタイムは std::bad_alloc をスローする必要がありますが、スローしない impl とアロケーターが実際に交換されている可能性があります。
DDClientData* pNewData = new DDClientData();
if (pNewData==NULL)
return E_OUTOFMEMORY;