C/C++知识点之C++ 如何快速清空vector以及释放vector内存?
小标 2019-01-21 来源 : 阅读 1895 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之C++ 如何快速清空vector以及释放vector内存?通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之C++ 如何快速清空vector以及释放vector内存?通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之C++ 如何快速清空vector以及释放vector内存?

平时我们在写代码时候,有思考过要主动去释放vector的内存吗?

1、对于数据量不大的vector,没有必要自己主动释放vector,一切都交给操作系统。
2、但是对于大量数据的vector,在vector里面的数据被删除后,主动去释放vector的内存就变得很有必要了!
 
读者可以新建一个控制台程序,把代码运行起来看输出,且看代码:
 

[cpp] view plain copy
 

#include   
#include   
#include   
#include   
#include   
#pragma comment(lib, "Psapi.lib")  
  
using namespace std;  
  
//GetCurPorcessMemory  
bool GetCurProcessMemory(HANDLE handle, std::wstring& workingSize, std::wstring& peakWorkingSize)  
{  
    //HANDLE handle = GetCurrentProcess();  
    PROCESS_MEMORY_COUNTERS pmc;  
    if (GetProcessMemoryInfo(handle, &pmc, sizeof(pmc)))  
    {  
        int size = pmc.WorkingSetSize/1024;  
        wchar_t buf[10] = {0};  
        _ltow(size, buf, 10);  
        workingSize = std::wstring(buf);  
  
        size = pmc.PeakWorkingSetSize/1024;  
        _ltow(size, buf, 10);  
        peakWorkingSize = std::wstring(buf);  
  
        return true;  
    }  
    return false;  
}  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
    std::wstring wszWorking, wszPeakWorking;  
    vector ary;  
  
    for (int i=0; i<1000000; i++)  
    {  
        ary.push_back("hello vector");  
    }  
  
    wchar_t wch;  
    wcin >> wch;  
  
    GetCurProcessMemory(GetCurrentProcess(), wszWorking, wszPeakWorking);// 此时检查内存情况  
    wcout << "Working : " << wszWorking.c_str() << " PeakWorking : " << wszPeakWorking.c_str() << endl;  
  
    wcin >> wch;  
  
    //  
    ary.clear();  
    wcout << "vector clear" << endl;  
    wcout << "vector capacity " << ary.capacity() << endl;      
    GetCurProcessMemory(GetCurrentProcess(), wszWorking, wszPeakWorking);// 此时再次检查  
    wcout << "Working : " << wszWorking.c_str() << " PeakWorking : " << wszPeakWorking.c_str() << endl;  
  
    wcin >> wch;  
    //vector(ary).swap(ary);  
    ary.swap(vector(ary));      
    wcout << "vector swap" << endl;  
    wcout << "vector capacity " << ary.capacity() << endl;// 此时容量为0     
    GetCurProcessMemory(GetCurrentProcess(), wszWorking, wszPeakWorking);// 检查内存  
    wcout << "Working : " << wszWorking.c_str() << " PeakWorking : " << wszPeakWorking.c_str() << endl;  
  
    wcout << "vector size : " << ary.size() << endl;//0  
  
    //getchar();  
    system("pause");  
  
    return 0;  

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程