我用vector建立了一个数组,可是当我采用clear()方法时,好像vector占用的内存没有释放掉,我该怎样做呢?
来源:百度文库 编辑:神马文学网 时间:2024/04/20 10:18:22
主 题: 我用vector建立了一个数组,可是当我采用clear()方法时,好像vector占用的内存没有释放掉,我该怎样做呢?
作 者: jeikyzhou (jeikyzhou)
等 级:
信 誉 值: 100
所属社区: C/C++ C++ 语言
问题点数: 20
回复次数: 12
发表时间: 2005-10-15 22:50:21
如题!
回复人: doway(john) ( ) 信誉:100 2005-10-15 23:20:00 得分: 0
resize 成不?
Top
回复人: jeikyzhou(jeikyzhou) ( ) 信誉:100 2005-10-15 23:45:00 得分: 0
rsize是不行的,好像vector占用内存后直到vector变量超出作用域后才会释放内存
Top
回复人: foochow(恰似你的温柔) ( ) 信誉:100 2005-10-15 23:59:00 得分: 0
VC6.0???
vector().swap(AA);
Top
回复人: doway(john) ( ) 信誉:100 2005-10-16 00:19:00 得分: 0
std::vector v(1024*1024);
v.resize(12);
{
std::vector tmp = v;
v.swap(tmp);
}
哈,这东西有意思。
《C++程序设计语言》一书中 C++ 的发明者专门讲到这个问题,但竟然讲错了!上面的代码可以释放多余的存储,但那对花括号是编者的修改。
Top
回复人: jeikyzhou(jeikyzhou) ( ) 信誉:100 2005-10-16 00:36:00 得分: 0
std::vector v(1024*1024);
v.resize(12);
{
std::vector tmp = v;
v.swap(tmp);
}
没看懂这可以释放内存
Top
回复人: winyin(无影) ( ) 信誉:99 2005-10-16 03:14:00 得分: 0
直接再声明一个空和原来的交换不就全删了吗? 原来空的退出作用域也自动OVER了.
Top
回复人: fangrk(加把油,伙计!) ( ) 信誉:125 2005-10-16 10:20:00 得分: 0
vector().swap(v);
或者
{
std::vector tmp = v;
v.swap(tmp);
}
都可以,意思一样的。
加一对大括号是可以让tmp退出{}的时候自动析构
Top
回复人: doway(john) ( ) 信誉:100 2005-10-16 12:53:00 得分: 0
多谢加油!:)
两星的评语,楼主该信了吧?
Top
回复人: shadowstar(CodeFast.very fast...) ( ) 信誉:101 2005-10-16 12:57:00 得分: 0
回复人: fangrk(加把油,伙计!) ( ) 信誉:125 2005-10-16 10:20:00 得分: 0
vector().swap(v);
或者
{
std::vector tmp = v;
v.swap(tmp);
}
都可以,意思一样的。
加一对大括号是可以让tmp退出{}的时候自动析构
应该不加{}也自动析构才对,不知道C++的编译器有没有做到这一点?
Top
回复人: chenhu_doc(小虎哥) ( ) 信誉:100 2005-10-16 13:10:00 得分: 0
doway(john)
两星的评语,楼主该信了吧?
///////////////////////////
反对偶像主义! ^=^
Top
回复人: skinny(冷虚空) ( ) 信誉:100 2005-10-18 08:40:00 得分: 0
使用 swap 就可以了
Top
回复人: lxpws(i‘m back) ( ) 信誉:100 2005-10-18 09:35:00 得分: 0
呵呵,设计者主要考虑效率方面的问题了
Top
作 者: jeikyzhou (jeikyzhou)
等 级:
信 誉 值: 100
所属社区: C/C++ C++ 语言
问题点数: 20
回复次数: 12
发表时间: 2005-10-15 22:50:21
如题!
回复人: doway(john) ( ) 信誉:100 2005-10-15 23:20:00 得分: 0
resize 成不?
Top
回复人: jeikyzhou(jeikyzhou) ( ) 信誉:100 2005-10-15 23:45:00 得分: 0
rsize是不行的,好像vector占用内存后直到vector变量超出作用域后才会释放内存
Top
回复人: foochow(恰似你的温柔) ( ) 信誉:100 2005-10-15 23:59:00 得分: 0
VC6.0???
vector
Top
回复人: doway(john) ( ) 信誉:100 2005-10-16 00:19:00 得分: 0
std::vector
v.resize(12);
{
std::vector
v.swap(tmp);
}
哈,这东西有意思。
《C++程序设计语言》一书中 C++ 的发明者专门讲到这个问题,但竟然讲错了!上面的代码可以释放多余的存储,但那对花括号是编者的修改。
Top
回复人: jeikyzhou(jeikyzhou) ( ) 信誉:100 2005-10-16 00:36:00 得分: 0
std::vector
v.resize(12);
{
std::vector
v.swap(tmp);
}
没看懂这可以释放内存
Top
回复人: winyin(无影) ( ) 信誉:99 2005-10-16 03:14:00 得分: 0
直接再声明一个空和原来的交换不就全删了吗? 原来空的退出作用域也自动OVER了.
Top
回复人: fangrk(加把油,伙计!) ( ) 信誉:125 2005-10-16 10:20:00 得分: 0
vector
或者
{
std::vector
v.swap(tmp);
}
都可以,意思一样的。
加一对大括号是可以让tmp退出{}的时候自动析构
Top
回复人: doway(john) ( ) 信誉:100 2005-10-16 12:53:00 得分: 0
多谢加油!:)
两星的评语,楼主该信了吧?
Top
回复人: shadowstar(CodeFast.very fast...) ( ) 信誉:101 2005-10-16 12:57:00 得分: 0
回复人: fangrk(加把油,伙计!) ( ) 信誉:125 2005-10-16 10:20:00 得分: 0
vector
或者
{
std::vector
v.swap(tmp);
}
都可以,意思一样的。
加一对大括号是可以让tmp退出{}的时候自动析构
应该不加{}也自动析构才对,不知道C++的编译器有没有做到这一点?
Top
回复人: chenhu_doc(小虎哥) ( ) 信誉:100 2005-10-16 13:10:00 得分: 0
doway(john)
两星的评语,楼主该信了吧?
///////////////////////////
反对偶像主义! ^=^
Top
回复人: skinny(冷虚空) ( ) 信誉:100 2005-10-18 08:40:00 得分: 0
使用 swap 就可以了
Top
回复人: lxpws(i‘m back) ( ) 信誉:100 2005-10-18 09:35:00 得分: 0
呵呵,设计者主要考虑效率方面的问题了
Top
我用vector建立了一个数组,可是当我采用clear()方法时,好像vector占用的内存没有释放掉,我该怎样做呢?
数组与vector有什么本质的区别??有了数组为什么还要用vector ??
vector
【我等你... 可是现在我连等的资格都没有了, 对不起, 打扰了】
我等你 可是现在我连等的资格都没有了 对不起 打扰了
Java Vector的用法
Java Vector的用法
好像我丈夫回来了
爱情是不可以望梅止渴的,一个男人愿意给女人多少时间,就是他有多爱你,你爱我的话,是可以挤出一点时间的,挤不出时间,是你已经做了抉择,既然没有时间,我释放你吧,释放你的同时,也是释放我自己
【楠蓉书香】爱情是不可以望梅止渴的,一个男人愿意给女人多少时间,就是他有多爱你,你爱我的话,是可以挤出一点时间的,挤不出时间,是你已经做了抉择,既然没有时间,我释放你吧,释放你的同时,也是释放我自己
一个丰胸的好方法,我亲自喝过,胸真的变大了呢
一个丰胸的好方法,我亲自喝过,胸真的变大了呢~
一个丰胸的好方法,我亲自喝过,胸真的变大了呢.
一个丰胸的好方法,我亲自喝过,胸真的变大了呢!!
一个丰胸的好方法,我亲自喝过,胸真的变大了呢..
一个丰胸的好方法,我亲自喝过,胸真的变大了呢!!
让Firefox最小化时释放占用的内存
我买了一张XP系统这张盘是一键安装的可是我没有安装过 谁知道告诉我高手 谢谢 - 已解决 ...
我等你... 可是现在我连等的资格都没有了 - 萝卜网 - 人人都是艺术家
没有你,我要做谁的舞伴呢?
vector类
我好像悟透了点江恩理论!
“大叔,别闹了,我可是有微博的人”
网站推广如何操作,方法很多,我没有整理呢???