`
dqifa
  • 浏览: 116363 次
社区版块
存档分类
最新评论

vector内存释放

 
阅读更多

光clear是不释放内存的,将你这段代码修改了一下,你看看,应该能明白了,不明白运行一下就知道了。

int main()
{
    vector<double>it;
    double a[100000];
    for(int i=0; i<100000; i++)
    {
        a[i]=i;
    }
    cout << "未放元素时容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //未放元素
    for(int i=0; i<100000; i++)
    {
        it.push_back(a[i]);
    }
    cout << "放元素后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //放元素
    it.clear();
    cout << "clear后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //clear
    vector<double>().swap(it);
    cout << "swap后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //swap

    return 0;
}

 

 

运行结果:

 

未放元素时容器大小为: 0容器容量为: 0
放元素后容器大小为: 100000容器容量为: 131072
clear后容器大小为: 0容器容量为: 131072
swap后容器大小为: 0容器容量为: 0

 

 

From:http://blog.sina.com.cn/s/blog_9d549eab0100zt7r.html

分享到:
评论

相关推荐

    vector 内存释放1

    对于`vector`来说,如果我们创建一个空的`vector`对象,然后将原来的`vector`与这个空对象交换,那么原来的`vector`就会被替换为一个空的`vector`,并且其内部的元素会被析构,从而释放内存。 例如: ```cpp ...

    正确释放Vector的内存

    在看微博的时候, 有人提出了一个对于Vector内存泄露的疑问( Link)。  博主采用 Vector存储一些数据,但是发现在执行 clear() 之后内存并没有释放,于是怀疑产生了内存泄露。随后有人回复:  “vector 的 ...

    vector的内存处理

    `vector`的内存处理是其高效性能的关键所在,它涉及到元素的存储、内存分配与释放等多个方面。理解这些细节对于编写高效、安全的C++代码至关重要。 1. **动态内存管理**: `vector`内部使用动态数组来存储元素。当...

    vector彻彻底底干干净净清理内存方法

    虽然`clear`仅会将`vector`的大小设置为零,但并不会立即释放内存,而`shrink_to_fit`则尝试释放`vector`未使用的内存空间,使`vector`的容量尽可能地接近其大小。 ```cpp p_TestArray.clear(); // 清空元素 p_...

    自己实现的vector

    2. **动态内存管理**:在`vector`的实现中,关键在于如何有效地进行内存分配和释放。当添加元素超过当前容量时,需要进行扩容操作。典型的策略是分配一个比当前容量更大的新内存块,然后将旧元素复制到新位置,并...

    vector源代码下载

    - `uncreate()`:释放`vector`占用的内存。 - `allocate(size_type)`:根据给定的大小分配内存。 - `init_fill(iterator, iterator, const T&)`和`init_copy(const_iterator, const_iterator, iterator)`:分别用于...

    C语言下的vector

    `vector_free()`则用于释放`vector`占用的所有内存,确保没有内存泄漏。 4. **添加元素**:`vector_push_back()`函数将元素添加到`vector`的末尾。这需要检查当前容量是否足够,如果不够,则调用`realloc()`扩大...

    纯c语言向量vector实现vector_master

    销毁时需要释放分配的内存。这可能通过`vector_init`和`vector_free`函数来完成。 2. 插入与删除元素:向量需要提供在两端(头部和尾部)插入和删除元素的功能。`vector_push_back`用于在向量尾部添加元素,`vector...

    vector 模拟实现

    1. **内存管理**:`vector`的核心在于能够动态地分配和释放内存。在C++中,这通常涉及到使用`new`和`delete`操作符来请求和释放内存。在模拟实现中,我们需要考虑如何为元素分配合适的空间,以及在需要时进行内存重...

    vector的c语言实现

    - `vector_destroy`函数用于释放向量占用的所有内存。 3. **添加元素**: - `vector_push_back`函数用于在向量末尾添加元素,如果容量不足,需要进行动态扩容。 - `vector_insert`函数可以在指定位置插入元素,...

    vector详细用法

    Vector在内部会自动管理内存,包括分配和释放。但在某些情况下,可能需要手动控制内存的分配和释放。`get_allocator`成员函数可以获取Vector使用的内存分配器。 示例代码如下: ```cpp std::vector&lt;int&gt; v; auto ...

    C++代码vector实现

    2. `clear()`:删除`vector`的所有元素,但不释放内存。 ### `vector`与数组的对比 `vector`提供了数组不具备的动态性,但访问速度略慢于静态分配的数组。数组在内存中是连续的,而`vector`可能会因为动态扩容而...

    C++内存管理详解,new,delete的合理使用

    内存管理主要包括动态内存分配和释放,其中new和delete是C++中进行动态内存操作的关键关键字。 首先,理解new和delete的基本用法是至关重要的。new用于在堆上分配内存,同时调用构造函数来初始化新创建的对象。例如...

    测试Vector

    4. **未及时释放**:如果程序设计有误,导致`std::vector`在不再使用后没有被正确清理,可能会造成内存泄漏。 为了优化`std::vector`的内存使用,可以采取以下策略: 1. **合理预分配**:在知道大致元素数量的情况...

    数组一维2维3维动态申请及用Vector的表示方法

    C++标准模板库(STL)提供了一个非常强大的容器——`vector`,它可以自动管理内存,并且支持动态改变元素数量。使用`vector`可以轻松地实现变长一维数组: ```cpp #include #include &lt;vector&gt; using namespace ...

    使用vector申请多维数组

    2. **内存管理**:`vector` 自动处理内存分配和释放,避免了手动内存管理可能导致的错误。 3. **STL接口**:`vector` 支持STL的迭代器和算法,使得代码更简洁,可读性更强。 4. **安全性**:相比指针操作,`vector` ...

    C++ 模板类 vector

    `vector`类在内存管理上非常高效,它会自动处理内存分配和释放,使得在处理大量数据时能够方便地进行动态扩展或收缩。 一、`vector`基础 1. **构造与初始化**:`vector`可以通过传入初始容量或元素值来创建。例如...

    c++ 简易模板类vector

    在简易版中,只需要减少`size`即可,无需释放内存,因为内存可能会被后续的元素复用。 ```cpp void pop_back() { --size_; } ``` **5. size()**: 返回`vector`中元素的数量。 ```cpp size_t size() const { ...

    c++ vector 小例子

    例如,当`vector`的生命周期结束时,它会自动释放其所占用的内存。此外,如果在`vector`的中间进行插入或删除操作,可能会影响到迭代器的合法性,因此在操作后,可能需要更新迭代器。 总之,`std::vector`是C++中...

    Vector最大容量

    然而,需要注意的是,这种方法可能会对系统资源造成不必要的压力,因为持续增加`vector`的大小会频繁地进行内存分配和释放。在实际应用中,除非有特殊需求,通常不建议这样做。 `vector`的容量管理是C++程序员必须...

Global site tag (gtag.js) - Google Analytics