将指针内容分配给变量

时间:2021-01-11 13:38:13

标签: c

给定一个大struct指针,比如说large_ptr,我想把它分配给一个相同类型的全局变量,我们称之为g_large,那么我有2个选择:

第一个使用 memcpy

memcpy(&g_large, large_ptr, sizeof(g_large));

第二个使用赋值:

g_large = *large_ptr;

由于我想知道的嵌入式软件中缺少内存和堆栈大小,第二种方式是否像 memcpy 一样,或者它是否创建了一个 tmp var 来执行分配?这有什么标准吗?

如果它表现得像 memcpy 那么我更喜欢它更短。但是如果它创建了一个临时变量,它可能是堆栈的问题。

您的经验和知识将不胜感激!

编辑

有几个提到我需要编译和查看程序集。 这是一个我需要学习的过程,因为它是一个交叉编译器,它生成二进制文件并且需要解析。不是一个简单的任务。我可以做到,但这需要时间。

1 个答案:

答案 0 :(得分:-1)

我可能误解了,但在您的 memcpy 函数中,sizeof(g_large) 将始终返回 8 个字节作为结果,因为 c 中的指针大小为 8 个字节。因此,您将获得指针大小而不是结构大小。如果只有指针寻址,就好像无法找到数组的大小一样。

[编辑:哦,是的,我误解了,但无论如何仍然推荐以下部分]

我会做什么:

  • 在主函数中动态分配内存
  • 将分配的内存指针传递给要在其中使用结构的本地函数
  • 在指定的内存空间上使用结构时,如果需要,扩展分配的内存
  • 在本地函数结束时,你的结构体已经存储在主函数内存空间中,不需要任何复制函数
相关问题