0

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

3 回答 3

7

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

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

于 2012-06-28T06:16:53.610 回答
3

这些地址将相互偏移 A 类的大小。

于 2012-06-28T06:15:55.903 回答
2

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

于 2012-06-28T06:15:39.517 回答