美文网首页
STL的内存碎片(内存空洞)验证

STL的内存碎片(内存空洞)验证

作者: 金琥 | 来源:发表于2018-03-31 20:58 被阅读40次

    C++的STL库在使用过程中要留意内存碎片,可以用以下方式简单验证

    #include <iostream>
    #include <vector>
    #include <new>
    
    using namespace std;
    
    struct t_test
    {
        int a;
        vector<string> *p;
    };
    
    int main()
    {
        struct t_test test;
        int tmp;
        test.p = new vector<string>;
        cin >> tmp;//程序暂停的观察点,用top查看进程占用内存很少,几乎可以认为为0
    
        for(int i=0;i<1000000;i++) {
            test.p->push_back("abcdefghijk");
        }
        cin >> tmp;//再观察,内存占用54M
        test.p->clear();
        cin >> tmp;//54M
        delete test.p;
        cin >> tmp;//49M,内存并未完全释放回系统,大部分形成了内存碎片
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:STL的内存碎片(内存空洞)验证

          本文链接:https://www.haomeiwen.com/subject/sojncftx.html