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

时间:2012-06-28 06:11:51

标签: 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;
}

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

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

地址将以A类的大小相互抵消。

答案 2 :(得分:2)

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