【发布时间】:2015-08-31 16:28:19
【问题描述】:
我一直在尝试将一些结构(我定义的)类型变量连接成一个更大的变量。我得到的基本上是这样的:
我有一个结构体和两个结构体**类型的变量。 我声明了第三个结构 C,我想将 A 和 B 连接到 C 中。 我尝试的是这样的(我现在没有代码在我面前,所以我会写一些非常相似的东西,有些名字因为我不记得而改变了。
struct** A, B;
struct** C;
(我知道 A 和 B,因为我通过调用另一个函数来接收它们)
我像这样为 C 分配内存。
C = (struct**)malloc(sizeof(A)+sizeof(B));
然后我像这样用 memcpy 移动 A 和 B。
memcpy(&C, &A, sizeof(A));
memcpy(&C + sizeof(A), &C, sizeof(B));
很明显,我所做的并不正确,因为所有这些 C 都只包含 A。 我很确定问题出在“**”,我不能很好地处理指向指针的指针。 有人可以就我的问题给我一些建议吗? 我也不想用Handles,我得用memcpy/memmove。
[评论更新:]
我的结构都是同一种类型。
【问题讨论】:
-
完全不清楚您真正想要实现的目标。
-
&C+sizeof(A)这在 memcpy 中意味着什么? -
如果您使用 C++ 编程,为什么要使用 C 标签?为什么要使用
malloc和memcpy(例如,如果你有复杂的数据或虚函数,它们可能会做一些不受欢迎的事情)?最后,为什么要指向指针?请尝试创建Minimal, Complete, and Verifiable Example。 -
“连接结构”是什么意思?我知道连接字符串“a”+“b”=="ab"。但是里面有任意变量的结构呢?你在搜索数组吗?
-
您应该选择一种语言。 C 和 C++ 是不同的语言,在内存分配方面更是如此。
标签: c++ c pointers struct memcpy