我正在创建一个堆栈虚拟机,想知道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世界有点陌生。
谢谢!