Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-如何使用shared_ptr替换T**_C++_Pointers_Memory Leaks_Shared Ptr - Fatal编程技术网

C++ C++;-如何使用shared_ptr替换T**

C++ C++;-如何使用shared_ptr替换T**,c++,pointers,memory-leaks,shared-ptr,C++,Pointers,Memory Leaks,Shared Ptr,我试图使用shared_ptr替换C风格的指针,以避免内存泄漏 T** list_of_T; 这是我的旧代码。我尝试以这种方式使用共享的ptr: vector<shared_ptr<T>> vector_Of_Tptr; Tptr的向量; 但我认为vector会占用更多内存,我应该重写一些代码。那么我可以用这样的方式修改代码吗 shared_ptr<shared_ptr<T> []> shared_list_of_T; shared\u p

我试图使用shared_ptr替换C风格的指针,以避免内存泄漏

T** list_of_T;
这是我的旧代码。我尝试以这种方式使用共享的ptr:

vector<shared_ptr<T>> vector_Of_Tptr;
Tptr的向量; 但我认为vector会占用更多内存,我应该重写一些代码。那么我可以用这样的方式修改代码吗

shared_ptr<shared_ptr<T> []> shared_list_of_T;
shared\u ptr shared\u list\u of T;

这是一种好的做法吗

我不确定std::shared_ptr在这里为您做了什么,除非您有其他对象指向相同的数组?否则,std::vector将更有意义。但是,这并不是特别有效,所以你可能想考虑在一个呈现二维视图的类中包装一维数组,有点像这样:在担心内存开销之前,你需要找出(并告诉我们)。这些对象的生命周期是什么,以及数据结构需要支持哪些更改。我不确定
std::shared\u ptr
在这里为您做了什么,除非您有其他对象指向相同的数组?否则,std::vector将更有意义。但是,这并不是特别有效,所以你可能想考虑在一个二维视图类中包装一维数组,有点像这样:在担心内存开销之前,你需要弄清楚(告诉我们)这些对象的寿命是什么,以及数据结构需要支持什么。