如何将矢量复制到另一个矢量的子向量而不用segfaulting?

时间:2017-06-17 02:53:16

标签: c++ vector c++14

我有一些看起来像这样的代码:

for (int = i; i > (chip.rom.size() - 1); i++) {
        //int i = 0;
        chip.memory[i + 512] = chip.rom[i];
        //i++;

}

chip是一个结构,其中memory和rom都是无符号字符的向量

rom是一个160字节的向量,这是我用来测试我的模拟器的游戏。

memory归零为4096字节,如下所示:

chip.memory = std::vector<BYTE>(4096);

经过调试,我设法发现我之后发生了故障。我觉得我疯了!我错过了什么明显的错误?

1 个答案:

答案 0 :(得分:3)

您没有初始化i并且您的比较方向错误。此外,如果您使用<进行比较,如果您只是想避免在- 1结束时使用chip.rom,则不需要#include <algorithm> // Somewhere up above ::std::copy(chip.rom.begin(), chip.rom.end(), chip.memory.begin() + 512);

你甚至不应该在这里使用循环。以下是代码应该如何阅读:

<algorithm>

使用for标题中的内容,您无需记住让db.inventory.find( { item: /^j/ }, { 'size.h': 1 } ) 语句中的所有内容始终正确无误。不仅如此,您的编译器可能会生成更高效的代码。