Betrachten Sie dieses Beispiel:Ist der Operator C `=` Speicher kopieren, wenn zwischen Strukturen angewendet?
typedef struct {
int x;
int y;
...
} ReallyBigItem;
ReallyBigItem* array = (ReallyBigItem*) malloc(sizeof(ReallyBigItem) * 8);
ReallyBigItem* item = (ReallyBigItem*) malloc(sizeof(ReallyBigItem));
item->x = 0;
item->y = 1;
array[0] = *item;
ReallyBigItem* array = (ReallyBigItem*) malloc(sizeof(ReallyBigItem) * 8);
ich Platz für ein Array bin Zuteilung, die in 8 ReallyBigItem
structs passt.
ReallyBigItem* item = (ReallyBigItem*) malloc(sizeof(ReallyBigItem));
Ich Zuteilung Platz für einen ReallyBigItem
und Speicherung es Speicheradresse in item
.
array[0] = *item;
Jetzt setze ich das erste Element des Arrays zu diesem Artikel.
Meine Frage ist:
der =
Operator Ist eigentlich Kopieren über die bereits zugewiesenen Speicher? Also die Item-Struktur existiert im Speicher zweimal?
Ja, so wie 'int a = b 'der Wert von' b 'dann zweimal im Speicher vorhanden ist. –
Wirf nicht das Ergebnis von 'malloc' & friends in C. – Olaf