zoukankan      html  css  js  c++  java
  • C++的STL中vector内存分配方法的简单探索

    STL中vector什么时候会自动分配内存,又是怎么分配的呢?

    环境:Linux  CentOS 5.2

    1、代码

    #include <vector>
    #include <stdio.h>
    
    using namespace std;
    
    int main()
    {
        vector<int> x_vec;
        printf("data size : [%3d], mem size : [%3d]
    ",
                x_vec.size(), x_vec.capacity());
        for(int i = 0; i < 260; i++)
        {
            x_vec.push_back(i);
            printf("data size : [%3d], mem size : [%3d]
    ",
                    x_vec.size(), x_vec.capacity());                                                     
        }   
    
        return 0;
    }

    2、运行结果

    data size : [  0], mem size : [  0]
    data size : [  1], mem size : [  1]
    data size : [  2], mem size : [  2]
    data size : [  3], mem size : [  4]
    data size : [  4], mem size : [  4]
    data size : [  5], mem size : [  8]
    ......
    data size : [  8], mem size : [  8]
    data size : [  9], mem size : [ 16]
    data size : [ 10], mem size : [ 16]
    ......
    data size : [ 15], mem size : [ 16]
    data size : [ 16], mem size : [ 16]
    data size : [ 17], mem size : [ 32]
    data size : [ 18], mem size : [ 32]
    ......
    data size : [ 31], mem size : [ 32]
    data size : [ 32], mem size : [ 32]
    data size : [ 33], mem size : [ 64]
    data size : [ 34], mem size : [ 64]
    ......
    data size : [ 63], mem size : [ 64]
    data size : [ 64], mem size : [ 64]
    data size : [ 65], mem size : [128]
    data size : [ 66], mem size : [128]
    ......
    data size : [127], mem size : [128]
    data size : [128], mem size : [128]
    data size : [129], mem size : [256]
    data size : [130], mem size : [256]
    ......
    data size : [255], mem size : [256]
    data size : [256], mem size : [256]
    data size : [257], mem size : [512]
    data size : [258], mem size : [512]
    data size : [259], mem size : [512]
    data size : [260], mem size : [512]

    结论:每次分配的内存用尽时,vector以指数方式再次分配内存

  • 相关阅读:
    线程池的爆掉
    WebApi的调用-1.前端调用
    使用SqlSugar 4.X的T4生成实体类
    JSON.NET 空值处理, 数字转字符,时间格式化
    C#获取路径
    MVC4 下DropDownList使用方法(转)
    14.并发与异步
    14.并发与异步
    14.并发与异步
    VS2013 生成时复制文件或目录到指定目录
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4270723.html
Copyright © 2011-2022 走看看