亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2930 | 回復(fù): 4
打印 上一主題 下一主題

請(qǐng)教一個(gè)vector容器的內(nèi)存使用問(wèn)題。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-09-06 10:04 |只看該作者 |倒序?yàn)g覽
30可用積分
本帖最后由 toniz 于 2011-09-06 10:06 編輯
  1. #include <vector>
  2. #include <deque>
  3. #include <string>
  4. #include <iostream>
  5. using namespace std;

  6. int main(int argc, char *argv[]){
  7.         string ok;
  8.         int *pp1=new int[20000000];
  9.         memset(pp1,0x00,20000000);  //4898 * 4K
  10.         delete [] pp1;  
  11.         cerr<<"After create memroy 1, please check the memory"<<endl;
  12.         cin>>ok;
  13.         vector<string > all_results;
  14.         all_results.resize(1000000);       //7827 * 4K
  15.         cerr<<"After resize 10000000, please check the memory"<<endl;
  16.         cin>>ok;
  17.         all_results.clear();
  18.         all_results.resize(10);
  19.         int *pp2=new int[20000000];
  20.         memset(pp2,0x00,20000000);   //4898  * 4K
  21.         delete [] pp2;  
  22.         cerr<<"After create memroy 2, please check the memory"<<endl;
  23.         cin>>ok;
  24. }
  25. //12712* 4K
復(fù)制代碼
上面的代碼分三個(gè)部分申請(qǐng)內(nèi)存,我用SVMON 觀察,如果是每部都拆開(kāi),那么第一步和第三步都是使用4898個(gè)4K頁(yè)面,第二步使用7827個(gè)頁(yè)面。

但如果串起來(lái)一起運(yùn)行的話(huà),最后占用的內(nèi)存就是12712個(gè)頁(yè)面。

第一步的數(shù)組,內(nèi)存刪除后,可以被VECTOR容器使用。 也就是我用SVMON 觀察,第一步內(nèi)存使用4898個(gè)頁(yè)面,第二版用了7827個(gè)頁(yè)面。但VECTOR調(diào)用了RESIZE之后頁(yè)面就一直占用了。

就算我在下面加上 clear 和重新resize  ,這部分內(nèi)存也沒(méi)被釋放。

請(qǐng)大牛指點(diǎn)一下。。謝謝

最佳答案

查看完整內(nèi)容

如果你想手工釋放vector里面的動(dòng)態(tài)內(nèi)存,可以這么做……{ vector temp_; temp.swap( all_results );}……

論壇徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16賽季CBA聯(lián)賽之青島
日期:2016-07-05 12:36:0515-16賽季CBA聯(lián)賽之廣東
日期:2016-06-29 11:45:542015亞冠之全北現(xiàn)代
日期:2015-07-22 08:09:472015年辭舊歲徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39獅子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技術(shù)圖書(shū)徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [報(bào)告]
發(fā)表于 2011-09-06 10:04 |只看該作者
本帖最后由 bruceteen 于 2011-09-06 10:44 編輯

如果你想手工釋放vector里面的動(dòng)態(tài)內(nèi)存,可以這么做

……
{
    vector<string> temp_;
    temp.swap( all_results );
}
……

評(píng)分

參與人數(shù) 1可用積分 +2 收起 理由
OwnWaterloo + 2 all_results.swap(vector()); //?

查看全部評(píng)分

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2011-09-06 10:11 |只看該作者
本帖最后由 xyfree 于 2012-01-21 04:20 編輯

評(píng)分

參與人數(shù) 1可用積分 +5 收起 理由
toniz + 5 謝謝~~

查看全部評(píng)分

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2011-09-06 10:48 |只看該作者
我又用一個(gè)代碼測(cè)試了下,證明如果超出變量作用域或者調(diào)用三樓的方法,內(nèi)存就不會(huì)疊加使用了。



謝謝上面兩位,問(wèn)題解決。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2011-09-06 10:53 |只看該作者
{:3_198:}不過(guò)感覺(jué)AIX的內(nèi)存管理機(jī)制會(huì)和STL的這個(gè)設(shè)計(jì)產(chǎn)生沖突。

因?yàn)锳IX的進(jìn)程內(nèi)存是申請(qǐng)了就不返回給系統(tǒng)的。所以如果一個(gè)類(lèi)里面使用了這寫(xiě)容器,那么容器也是一直保持最大的容量。那么AIX的進(jìn)程使用的內(nèi)存就會(huì)越來(lái)越來(lái)。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP