我正在尝试将指针数组中的数据复制到另一个指针数组中。
我的C++知识很少,但有一些更高级的语言。
以下是我到目前为止所实现的示例代码(简化版本):
#define MAX_ACTIVE_MODES 3
myStruct_t priorities1[MAX_ACTIVE_MODES];
myStruct_t *priorities2[MAX_ACTIVE_MODES];
for (unsigned short i = 0; i < MAX_ACTIVE_MODES; ++i) {
priorities2[i] = (myStruct_t*)malloc(sizeof(myStruct_t));
memcpy(priorities2[i], &priorities1[i], sizeof(myStruct_t));
}
// ...
delete[] *priorities2;
对于我来说,有一个用于priorities1
的非指针变量和一个用于priorities2
的非指针变量更容易,因为我将它传递给一个排序函数。
当我寻找解决方案时,从来没有type *var[]
的情况,我不明白为什么。
发布于 2020-01-12 05:46:52
尽管您的问题被标记为c++,但根据您对malloc
的使用,我假设您使用的是C语言。
首先,您不需要使用memcpy
来复制结构。
*priorities2[i] = priorities1[i];
应该等同于
memcpy(priorities2[i], &priorities1[i], sizeof(myStruct_t));
其次,您不必在priorities1[]
中创建元素的副本。只需让priorities2[]
中的指针指向priorities1[]
中的元素
for (size_t i = 0; i < MAX_ACTIVE_MODES; ++i)
{
priorities2[i] = &priorities1[i];
}
只要您在priorities1
的生命周期之外不访问priorities2
,就不需要malloc
或free
。
https://stackoverflow.com/questions/59698723
复制相似问题