定义一个vector类型的对象,我想释放其中的最后一个对象??(20分)

  • 主题发起人 主题发起人 林枫
  • 开始时间 开始时间

林枫

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是一个vector的定义,我想释放其中的最后一个对象:
vector< WCHAR* > list;
list.push_back(L"AB");
list.push_back(L"CD");
list.push_back(L"EF");
if (list.size() >= 1)
{
list.pop_back();
};
我发现pop_back方法只是从list中移除了最后一个对象,并没有从内存中真正释放掉 它,怎样能释放掉呢?
 
Vector 对象是自动分配内存的,push_back() 和 pop_back() 只是向vector里添加和删除对象,内存管理和对象操作是分开的,不需要删除内存。
 
我知道是分开操作的,所以我问怎么能释放内存啊?
是这样的,我做了个3D场景,可能在场景里增加人物,我new了个人物类,然后将他们用push_back()压到Vector中,这时他们可以在场景中自由走动。
还有个功能是减少人物的功能,用pop_back()从Vector中减去最后一个压进来的人物,但我发现,Vector并不做内存管理,它只从列表中删除这个对象的引用。所以我想自己释放掉最后一个人物的内存,当我delete时却报错,错误提示:这个内存正被使用中。
 
if (list.size() >= 1)
{
//如果是new的对象就
delete cobject;
list.pop_back();
};
 
后退
顶部