我有一些看起来像这样的代码:
for (int = i; i > (chip.rom.size() - 1); i++) {
//int i = 0;
chip.memory[i + 512] = chip.rom[i];
//i++;
}
chip
是一个结构,其中 memory 和 rom 都是无符号字符的 vector
rom
是一个 160 字节的 vector ,它是我用来测试我的模拟器的游戏 rom。
memory
归零为 4096 字节,如下所示:
chip.memory = std::vector<BYTE>(4096);
经过调试,我设法发现我在这个 for 语句之后出现了段错误。我觉得我要疯了!我错过了什么明显的错误?
最佳答案
你没有初始化 i
你的比较是错误的方向。此外,如果您使用 <
为了便于比较,- 1
如果您只是想避免跑完 chip.rom
的末尾,则没有必要.
你甚至根本不应该在这里使用循环。以下是代码应该如何阅读:
#include <algorithm> // Somewhere up above
::std::copy(chip.rom.begin(), chip.rom.end(), chip.memory.begin() + 512);
使用 <algorithm>
中的内容 header ,您不必记住在 for
中获取所有内容语句始终正确。不仅如此,您的编译器可能会生成更高效的代码。
关于c++ - 如何在不发生段错误的情况下将 vector 复制到另一个 vector 的子 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44600316/