Das Refactoring von altem Code kann fragwürdige Praktiken aufdecken, wie die Verwendung von Arrays mit der Länge Null in Strukturen. Dies wirft die Frage auf: Warum ein Array ohne Elemente erstellen?
Bedenken Sie die folgende Struktur:
struct someData { int nData; BYTE byData[0]; }
Ein Array mit der Länge Null, wie es in byData zu sehen ist, ist eine ungewöhnliche Wahl. Typischerweise speichern Arrays Elemente. Als Zeiger können jedoch Arrays der Länge 0 verwendet werden. In diesem Fall dient byData als Platzhalter für einen Puffer variabler Länge, der später dynamisch zugewiesen wird.
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) + size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
Diese Funktion reserviert Speicher für eine someData-Struktur und einen Puffer der angegebenen Länge. Das Array mit der Länge Null in der Struktur ermöglicht es uns, es als Zeiger zu behandeln, der auf den dynamisch zugewiesenen Puffer verweist.
Um diesen Code umzugestalten, sollten Sie Folgendes verwenden:
Das obige ist der detaillierte Inhalt vonWarum Arrays mit der Länge Null in C-Strukturen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!