在下面的代码中,我每次都会为第一个元素获得不同的地址std::vector v
。为什么会这样呢?
#include <memory>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v;
for (int i=0; i<10; ++i)
{
int b = i;
v.push_back(b);
std::cout << std::addressof(v[0]) << std::endl;
}
return 0;
}
Output:
0x603010
0x603030
0x603010
0x603010
0x603050
0x603050
0x603050
0x603050
0x603080
0x603080
因为当你调用时可能需要为向量中包含的数据分配新的内存
v.push_back(b);
P.S.
你说:
在下面的代码中,每次 std::vector v 的第一个元素我都会得到不同的地址。为什么会这样呢?
如果你看一下你的输出,你会发现并不是每次都是这样:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)