gpt4 book ai didi

c++ - vector 保持内存甚至与另一个空 vector 交换

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:34 25 4
gpt4 key购买 nike

我做了一个小实验,代码如下:

    vector<char> *p = new vector<char>[1024];
for (size_t i = 0; i < 1024; i++)
{
(*p++).resize(1024 * 1024);//alloc 1 G memory
}

sleep(5);
cout << "start to clear" << endl;
for (size_t i = 0; i < 1024; i++)
{
vector<char> tmp;
tmp.swap(*p++);
}
delete [] p;

cout << "clear over!" << endl;
sleep (5);

//这里内存还是1G,为什么?非常感谢。

最佳答案

在大多数实现中,内存不会立即返回给操作系统,而是放入“空闲列表”中,因为从操作系统获取内存通常比遍历这样的空闲列表要昂贵得多。这很可能就是为什么您仍然看到 1gig 内存的原因,无论您在哪里检查它。

另外,在你的代码中,我没有看到你在保留所有 vector 后重置 p 的位置,你基本上是用不属于你的未初始化内存交换空 vector 。

关于c++ - vector 保持内存甚至与另一个空 vector 交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com