memcpy或memmove在不同的数组之间

时间:2016-03-09 16:22:06

标签: c++ arrays concatenation memcpy memmove

我正在阅读有关memcpy和memmove的一些信息,如果我没有错,你可以将它们用于不同阵列之间的移动内存。

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

for(int i=n; i>0; i--) {
    integerArray[n-i-1] = i;
}

因此,从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"吗?当然,假设我们有足够的空间。

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

谢谢。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

这就是为什么它不打印任何东西。但是,是的,我现在已经记得更清楚了。谢谢大家的答案。