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;
}
我得到的输出在内存中不连续。
答案 0 :(得分:7)
首先,您显示的内存是连续的 - 只是整数的大小似乎是您系统上的4个字节。
此外,您的向量大小为10,并且您打印的地址最多为12.但是,由于向量的内存分配策略,这不是问题。请记住,你应该更加小心。
答案 1 :(得分:3)
地址将以A类的大小相互抵消。
答案 2 :(得分:2)
因为在您的系统中,每个int
的大小都是4个字节。