std::string 缓冲大小的动态增长

std::string::reserve()方法 预分配指定大小内存

capacity()方法 返回对象内部实际缓冲区的大小

length() 或 size() 方法都返回实际字符串长度

    std::string test_text;
    test_text.reserve(200);
    for(int k=0 ; k< 30; k++)
    {
        test_text.append("1234567890\r\n");
        qDebug() << " capacity = " << test_text.capacity();
        qDebug() << "   length = " << test_text.length();
        qDebug() << QString::fromStdString(test_text);
    }
std::string 缓冲大小的动态增长_第1张图片

每当字符串实际长度突破了原有缓冲区大小,将重新分配,新分配大小是原来的约 150%

测试结果是 207 bytes --> 310 bytes --> 465 bytes

std::string 缓冲大小的动态增长_第2张图片
std::string 缓冲大小的动态增长_第3张图片

你可能感兴趣的:(C/C++,qt,c++)