c ++ vector不分配连续的内存

Aak*_*nuj 0 c++ vector

C++中的std :: vector将对象存储在连续的内存位置.但是当我打印地址时,我发现这不会发生.请告诉我原因.代码在这里:

#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;
}
Run Code Online (Sandbox Code Playgroud)

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

izo*_*ica 7

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

此外,您的向量大小为10,并且您打印的地址最多为12.但是,由于向量的内存分配策略,这不是问题.请记住,你应该更加小心.