gpt4 book ai didi

c++ - 不同数组之间的 memcpy 或 memmove

转载 作者:行者123 更新时间:2023-11-28 02:10:31 25 4
gpt4 key购买 nike

我正在阅读一些关于 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);吗?当然,假设我们有足够的空间。

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

谢谢。

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

最佳答案

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

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

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

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

关于c++ - 不同数组之间的 memcpy 或 memmove,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35897053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com