【问题标题】:Copy Allocated Struct in C在 C 中复制分配的结构
【发布时间】:2012-04-01 14:00:00
【问题描述】:

好的,所以我有一个 structs of structs of stru... 有没有办法将包含所有数据的整个结构复制到一个新结构中,而不必分配其他一系列结构?

【问题讨论】:

    标签: c memory-management struct


    【解决方案1】:

    是的,只需分配:

    MyStruct a;
    MyStruct b;
    
    ...
    
    a = b;
    

    这会执行浅拷贝;如果任何结构包含指针,那么只有指针被复制,而不是被指向的东西。如果您需要深拷贝,则必须编写自己的例程。

    【讨论】:

    • +1。但是,根据您的环境,简单的分配可能还不够。一些编译器会发出对memcpy 的字面调用,因此如果该符号未在您的环境中定义(或具有奇怪的语义),您可能会遇到麻烦。
    • @CarlNorum:这将是非常烦人的,因为上面是明确定义的 C89...
    • 这实际上非常烦人,但不幸的是真实的。
    • @CarlNorum:毫无疑问。你能推荐一个这样做的编译器吗?
    • GCC、clang 和 Visual Studio 都可以做到。事实上,在某些版本中甚至无法避免上述行为。
    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多