這些版本是新和刪除是異常安全嗎?任何可能的陷阱?使用分配器
假設customized_allocator_type是STL兼容的。還假定分配器的構造函數沒有任何副作用,並且所有實例都是等價的。
在此先感謝您的意見!
template <typename T>
inline T * customized_new(const T& t)
{
customized_allocator_type<T> alloc;
T * ptr = alloc.allocate(1);
if (ptr==0)
throw std::bad_alloc();
try {
alloc.construct(ptr, t);
} catch (...) {
alloc.deallocate(ptr, 1);
throw;
}
return ptr;
}
template <typename T>
inline void customized_delete(T * ptr)
{
if (ptr==0)
return;
customized_allocator_type<T> alloc;
alloc.destroy(ptr);
alloc.deallocate(ptr, 1);
};
同意。符合STL的分配器不應該返回null。我將你的答案標記爲已接受。謝謝。 – pic11 2011-03-27 08:14:10