gpt4 book ai didi

c++ - 将 shared_ptr 分配给数组的偏移量

转载 作者:可可西里 更新时间:2023-11-01 15:46:21 24 4
gpt4 key购买 nike

假设我有一个数组的 shared_ptr:

std::shared_ptr<int> sp(new T[10], [](T *p) { delete[] p; });

还有一个方法:

shared_ptr<T> ptr_at_offset(int offset) {
// I want to return a shared_ptr to (sp.get() + offset) here
// in a way that the reference count to sp is incremented...
}

基本上,我想做的是返回一个新的 shared_ptr 来增加引用计数,但指向原始数组的偏移量;我想避免在调用者以某个偏移量使用数组时删除数组。如果我只是返回 sp.get() + offset 可能会发生,对吗?而且我认为初始化一个新的 shared_ptr 以包含 sp.get() + offset 也没有意义。

C++ 的新手,所以不确定我是否正确处理了这个问题。

最佳答案

您应该能够使用 aliasing constructor :

template< class Y > 
shared_ptr( const shared_ptr<Y>& r, element_type* ptr ) noexcept;

这与给定的 shared_ptr 共享所有权,但确保根据那个而不是您给它的指针进行清理。

shared_ptr<T> ptr_at_offset(int offset) {
return {sp, sp.get() + offset};
}

关于c++ - 将 shared_ptr 分配给数组的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453585/

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