向量保留空间是否总是linerar?

时间:2018-07-12 19:30:52

标签: c++ virtual-machine

我正在创建一个堆栈虚拟机,想知道vector如何真正在地下工作。这个问题也与malloc有关。

考虑以下代码:

std::vector<int> vec;
vec.push_back(1);
vec.push_back(3);
vec.push_back(7);
for (unsigned long long i = 0; i < vec.size(); i++) {
    std::cout << &vec[i] << std::endl;
}
std::cout << &vec[0] << std::endl;
std::cout << &vec[0] + 1 << std::endl;
std::cout << &vec[0] + 2 << std::endl;

在我的计算机中显示以下输出:

00000292E7CF9D20
00000292E7CF9D24
00000292E7CF9D28
00000292E7CF9D20
00000292E7CF9D24
00000292E7CF9D28

问题是;通过存储要由我的VM运行的所有程序指令,我使用了向量。我有一台PC(程序计数器/指令指针):

PC应该指向向量的第一个地址,并在每次移至下一条指令时将其递增1,还是应该由向量访问器简单地访问它(这当然会比较慢...)? / p>

将1递增到一个地址真的不是一个好习惯吗?

我对c / cpp世界有点陌生。

谢谢!

0 个答案:

没有答案