gpt4 book ai didi

c++ - 使用分配器

转载 作者:搜寻专家 更新时间:2023-10-31 01:57:34 24 4
gpt4 key购买 nike

newdelete 这些版本是否异常安全?有什么可能的陷阱吗?

假设 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);
};

最佳答案

这(充其量)是多余的:

if (ptr==0)
throw std::bad_alloc();

如果 customized_allocator_type 满足标准库分配器要求,那么在无法获得存储时它必须引发异常。从 allocate 返回 null 是不正确的。

关于c++ - 使用分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5447609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com