gpt4 book ai didi

c++ - 关于 vector 内存存储

转载 作者:行者123 更新时间:2023-11-27 23:54:22 24 4
gpt4 key购买 nike

我正在学习 vector 在 C++ 中的工作方式,并编写了一个示例程序来尝试了解如何处理 vector 内存。

#include <iostream>
#include <vector>

int main()
{

//Test 1:
double n = 3.5;
std::vector<double> test;
std::cout << sizeof(test) << std::endl;
test.push_back(n);
std::cout << sizeof(test) << std::endl;

std::cout << std::endl;
std::cout << std::endl;
std::cout << std::endl;

//Test 2


std::vector<int> test2;
std::cout << sizeof(test2) << std::endl;
for (int i = 0; i < 1000; i++) {

test2.push_back(i);

}

std::cout << sizeof(test2) << std::endl;
}

有趣的是,程序每次都打印出 24 作为存储的字节数。尽管向 vector 中添加了新元素。 vector 在初始声明时占用的内存量与我向 vector 添加元素后占用的内存量如何?

最佳答案

在内部,vector 对象有一个指向包含元素的动态分配内存的指针。当您使用 sizeof(test) 时,您只是获取包含指针的结构的大小,不包括它指向的内存的大小。

此内存必须动态分配,以便 vector 可以根据需要增长和收缩。类对象不可能更改其大小。

要获取数据存储使用的内存量,请使用 sizeof(double) * test.capacity()

关于c++ - 关于 vector 内存存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772171/

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