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

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

#include 
#include 
#include 

using namespace std;

struct t_test
{
    int a;
    vector *p;
};

int main()
{
    struct t_test test;
    int tmp;
    test.p = new vector;
    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的内存碎片(内存空洞)验证)