C++ 如何转移boost::ptr_vector元素的所有权?
C++ 如何转移boost::ptr_vector元素的所有权?,c++,boost,C++,Boost,ptr\u-vector::release返回一个ptr\u-vector::auto\u-type,这是一种轻量级智能指针,当auto\u-type项目超出范围时,它指向的东西会自动删除。要恢复指向该对象的原始指针,并防止其被持有它的auto_ptr删除,您也需要调用release: deleted 0x300300 deleted 0x300300 c(6832) malloc: *** error for object 0x300300: double free intmain(){ p
ptr\u-vector::release
返回一个ptr\u-vector::auto\u-type
,这是一种轻量级智能指针,当auto\u-type
项目超出范围时,它指向的东西会自动删除。要恢复指向该对象的原始指针,并防止其被持有它的auto_ptr
删除,您也需要调用release
:
deleted 0x300300
deleted 0x300300
c(6832) malloc: *** error for object 0x300300: double free
intmain(){
ptr_向量v;
v、 推回(新A);
A*temp=v.release(v.begin()).release();
删除临时文件;
返回0;
}
第一次释放
告诉ptr\u向量
放弃它;第二个命令告诉auto_ptr
也放弃它
deleted 0x300300
deleted 0x300300
c(6832) malloc: *** error for object 0x300300: double free
int main() {
ptr_vector<A> v;
v.push_back(new A);
A *temp=v.release(v.begin()).release();
delete temp;
return 0;
}