请教各位大哥一个问题 我要怎么释放vector容器内申请的内存
#include<iostream>#include<string>
#include<algorithm>
#include<vector>
class Object
{
private:
std::stringmy_name;
int my_age;
public:
Object( std::string st = "None" , int a = 0 ) : my_name(st) , my_age(a) { std::cout<<"**构造函数**\n"; }
Object( const Object & obj )
{
my_name = obj.my_name;
my_age= obj.my_age;
std::cout<<"***拷贝构造函数***\n";
}
~Object() { std::cout<<"**********析构函数**********\n"; }
Object & operator=( const Object & obj)
{
if( this == &obj )
return *this;
my_name = "none";
my_age= 0;
my_name = obj.my_name;
my_age= obj.my_age;
std::cout<<"***赋值重载运算符***\n";
return *this;
}
friend std::ostream & operator<<( std::ostream & os , const Object & obj )
{
os<<"name = "<<obj.my_name<<"-----age = "<<obj.my_age<<std::endl;
return os;
}
};
int main()
{
Object B("王菲" , 44);
std::vector<Object*> v2;
v2.push_back(&B);
v2.push_back( new Object("李小璐" , 18) );
std::cout<<"v2 : "<<*v1<<"\n";
std::cout<<"v2 : "<<*v2<<"\n";//请问这里vector容器里面申请的内存要怎么释放掉
return 0;
} 还有个问题 我有一个打印v2容器里面元素的函数
void show_obj( const Object * obj)
{
std::cout<<*obj;
}
我要怎么将元素传进去
std::cout<<"v2 : "<<show_obj(v2 )<<"\n";这样传不对 程序报错 本帖最后由 bin554385863 于 2019-12-23 16:03 编辑
遍历数组找到申请的内存空间指针,然后释放。
把栈空间分配指针和堆空间申请的指针放在一块,果然是不嫌麻烦。 bin554385863 发表于 2019-12-23 15:51
遍历数组找到申请的内存空间指针,然后释放。
把栈空间分配指针和堆空间申请的指针放在一块,果然是不嫌麻 ...
那就是直接释放就对了是吧 就像这样 delete v1; 是这样,不过既然都用vector了,为什么不再试试shared_ptr或unique_ptr呢?
页:
[1]