Ich habe die folgenden zwei Strukturen, in denen "child struct" eine "rusage struct" als Element hat.C Programmierung. Wie man eine Struktur tief kopiert?
Dann erstelle ich zwei structs vom Typ „Kind“ nennen wir sie Childa und childB
Wie kopiere ich nur die rusage Struktur von Childa zu 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;
Ich habe folgendes, aber ich denke, es kopiert den Speicherplatz, denn wenn ich den Wert der Nutzung in Childa verändert, ändert sich auch in childB.
Ich weiß, dass gibt childB alle Werte von childA. Ich habe bereits auf die anderen Felder in childB aufgepasst, ich muss nur in der Lage sein, die Russe-Struktur namens usage zu kopieren, die sich in der "child" -Struktur befindet.
all Ihr Vorschlag Arbeit eine exakte Kopie von Childa zu machen, aber wenn ich jemals Childa ändern, childB ändert sich auch. – user69514
Mit Ihrem Code stimmt etwas nicht. Alle Antworten auf Ihre Frage sind korrekt und erzeugen den von Ihnen gewünschten Effekt. Wenn es nicht funktioniert, ist das Problem woanders. –
@uknown - das bedeutet, dass entweder die beiden Strukturinstanzen dieselbe Adresse haben (dh sie sind dieselbe Instanz), oder dass etwas zwei unterschiedliche Instanzen der Daten an zwei verschiedenen Adressen ändert (oder dass Sie sich irren) in dem, was du berichtest). – ChrisW