C++ 向量不分配连续内存

c++ vector not allocating contiguous memory

本文关键字:连续 内存 分配 向量 C++      更新时间:2023-10-16

C++中的 std :: 向量将对象存储在连续的内存位置。但是当我打印地址时,我发现这并没有发生。请让我知道为什么。代码在这里:

#include <iostream>
#include <vector>
using namespace std;
class a
{
     int val1;
};
vector<a> records(10);
int main()
{
     int i;
     for(i=0;i<12;i++)
         cerr<<"address"<<i<<"="<<&records[i]<<endl;
}

我得到的输出在内存中不是连续的。

首先,您显示的内存地址是连续的 - 在您的系统上,整数的大小似乎是 4 个字节。

此外,您的矢量大小为 10,您可以打印最多 12 个地址。不过,由于向量的内存分配策略,这不是问题。请记住,您应该更加小心。

地址将因类 A 的大小而相互偏移。

因为在您的系统中,每个int的大小为 4 个字节。