gpt4 book ai didi

c++ - TR1 共享阵列

转载 作者:IT老高 更新时间:2023-10-28 22:26:17 25 4
gpt4 key购买 nike

我很难在 TR1 文档中找到有关共享数组的引用资料。 Boost 文档非常清楚 C++“new”和“new[]”表达式之间存在显着差异。 shared_ptr 模板旨在正确保存指向使用“new”创建的动态分配对象的指针。 shared_array 模板旨在使用“new[]”正确保存指向动态分配数组的指针。

我正在更新一些代码以使用 TR1 shared_ptr 模板和相关函数,但我发现没有提到 shared_array。 TR1 shared_ptr 实现是否区分“new”和“new[]”,并正确销毁这些指针?据我从 TR1 规范中可以看出,它似乎没有。如果是这种情况,我是否仍应将 boost shared_array 模板用于“new[]”样式分配?

最佳答案

没错,TR1中没有shared_array。

但是,如果您希望使用此构造函数,您可以提供自己的删除器对象来执行“删除 []”:

template<class Other, class D>
shared_ptr(Other* ptr, D dtor);

例如:

template<typename T>
struct my_array_deleter
{
void operator()(T* p)
{
delete [] p;
}
};

shared_ptr<int> sp(new int[100], my_array_deleter<int>());

关于c++ - TR1 共享阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/627641/

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