首先,python使用c++库传数据的部分方法在我之前的小心得里有:python调用c++的库传递二级指针,希望有帮到大家。
今天说一下c++的接口里使用智能指针shared_ptr接收数据的问题,接口都是使用的指针传递数据,原本的想法很简单,直接使用传入的指针构建shared_ptr:
shared_ptr<int> merge_arr(resample_pos);
其中resample_pos是int *,处理数据的过程没有问题,全部数据也都能正常使用,但是当api结束的时候,程序崩溃,因为shared_ptr会析构,将原始数据也释放掉了,外部使用的时候,这个指针已经是无效的了。
另外一个小问题就是关于std::copy的使用,可以将数据进行快速拷贝使用,
template<class _InIt,class _OutIt> inline_OutIt copy(_InIt _First, _InIt _Last,_OutIt _Dest){ // copy [_First, _Last) to [_Dest, ...)_DEPRECATE_UNCHECKED(copy, _Dest);return (_Copy_no_deprecate(_First, _Last, _Dest));}
但是,_Dest用容器的时候要注意,需要先申请容器空间,否则只相当于作为一个指针地址,当你想要使用容器的时候,容器个数为0,甚至会越界出错等等。
如果表述有问题,希望大家给予指正,谢谢!