C编程.如何深度复制结构?

use*_*514 8 c struct deep-copy memcpy

我有以下两个结构,其中"child struct"有一个"rusage struct"作为元素.

然后我创建两个类型为"child"的结构,让我们称它们为childA和childB

如何将childA的rusage结构复制到childB?

typedef struct{                         
        int numb;
        char *name;
        pid_t pid;
        long userT;
        long systemT;
        struct rusage usage;
}child;


typedef struct{
    struct timeval ru_utime; /* user time used */
    struct timeval ru_stime; /* system time used */
    long   ru_maxrss;        /* maximum resident set size */
    long   ru_ixrss;         /* integral shared memory size */
    long   ru_idrss;         /* integral unshared data size */
    long   ru_isrss;         /* integral unshared stack size */
    long   ru_minflt;        /* page reclaims */
    long   ru_majflt;        /* page faults */
    long   ru_nswap;         /* swaps */
    long   ru_inblock;       /* block input operations */
    long   ru_oublock;       /* block output operations */
    long   ru_msgsnd;        /* messages sent */
    long   ru_msgrcv;        /* messages received */
    long   ru_nsignals;      /* signals received */
    long   ru_nvcsw;         /* voluntary context switches */
    long   ru_nivcsw;        /* involuntary context switches */

}rusage;
Run Code Online (Sandbox Code Playgroud)

我做了以下,但我想它会复制内存位置,因为如果我更改了childA中的使用值,它也会在childB中更改.

memcpy(&childA,&childB, sizeof(rusage));
Run Code Online (Sandbox Code Playgroud)

我知道这给了childB来自childA的所有值.我已经处理了childB中的其他字段,我只需要能够复制驻留在"子"结构中的名为usage的rusage结构.

nos*_*nos 20

只是:

childB.usage = childA.usage;
Run Code Online (Sandbox Code Playgroud)


Ale*_*vis 10

不应该是:

memcpy(&(childB.usage), &(childA.usage), sizeof(rusage))
Run Code Online (Sandbox Code Playgroud)