使用memcpy结果缓存结果输出0?

时间:2017-07-22 22:17:14

标签: c++

我试图将原始代码简化为一个简单的测试示例,该示例复制了我遇到的问题。我事先为这个简单的问题道歉..我是C ++的初学者。

所以转移实际的问题..为什么我得到0作为输出?出于我的这个例子的目的和我的理解,除了它们中的数值之外,不应该修改函数(这意味着我错了:)。

非常感谢提前。

static unsigned short buffer[5];

void settingMemory()
{
    memset(buffer, 0, sizeof(buffer));
}

void copingMemory(const unsigned short *pixels)
{
    memcpy(&buffer[5], pixels, 5*sizeof(unsigned short));
}

void printingMemory()
{
    unsigned short *test = buffer;
    std::cout << *test << std::endl;
    std::cout << *test++ << std::endl;
    std::cout << *test++ << std::endl;
    std::cout << *test++ << std::endl;
    std::cout << *test++ << std::endl;
    std::cout << *test++ << std::endl;
}

int main(int argc, char* argv[])
{
    settingMemory();
    unsigned short test[5];
    test[0] = 5;
    test[1] = 55;
    test[2] = 555;
    test[3] = 5555;
    test[4] = 55555;
    copingMemory(test);
    printingMemory();
}

我的输出是:

0
0
0
0
0
0

1 个答案:

答案 0 :(得分:0)

memcpy(&buffer[5], pixels, 5*sizeof(unsigned short));复制到缓冲区的第6个元素的开头(即第一个元素/外部/缓冲区。用memcpy(&buffer[0], pixels, 5*sizeof(unsigned short));替换它,所以你复制它改为 1st 元素。