不同数组之间的 memcpy 或 memmove

memcpy or memmove between different arrays

我正在阅读有关 memcpy 和 memmove 的一些信息,如果我没记错的话,您可以将两者用于在不同数组之间移动内存。

所以这是我的问题:如果我想用这个方法连接这个对象。

class List
{
    // Pointer to the beginning.
    int* vector;

    // Number of elements, n >= 0
    int n;

    // Capacity for new elements.
    int capacity;
}

void concatenateList(List* listToConcatenate)
{    
    memmove(this->vector + n, listToConcatenate->vector, (listToConcatenate->n)*sizeof(int));
}

所以,从"listToConcatenate->vector"开始,我们将用"(listToConcatenate->n)*sizeof(int))"复制它的所有元素,我们将把它放在另一个数组"this->vector + n"的末尾。

这不应该是正确的吗list2.listToConcatenate(&list1);?当然,假设我们有足够的 space.

如果不是,正确的做法是什么?这可以用 memcpy 完成吗?

谢谢。

编辑:我想我需要补充一点,这对我的程序不起作用。它没有崩溃,但似乎什么也没做。

好的,我发现了我的错误。

是的,你可以用 memmove 做到这一点,但我错过了一些东西:

void concatenateList(List* listToConcatenate)
{    
    memmove(this->vector + n, listToConcatenate->vector, (listToConcatenate->n)*sizeof(int));
    this->n += listToConcatenate->n; //Mistake here.
};

这就是它没有打印任何东西的原因。但是,是的,我现在更清楚了。谢谢大家的回答。