La refactorisation d'un ancien code peut révéler des pratiques douteuses, comme l'utilisation de tableaux de longueur nulle dans les structures. Cela soulève la question : Pourquoi créer un tableau sans éléments ?
Considérez la structure suivante :
struct someData { int nData; BYTE byData[0]; }
Un tableau de longueur nulle, comme le montre byData, est un choix inhabituel. En règle générale, les tableaux stockent des éléments. Cependant, les tableaux de longueur 0 peuvent être utilisés comme pointeurs. Dans ce cas, byData sert d'espace réservé pour un tampon de longueur variable qui sera alloué dynamiquement ultérieurement.
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) + size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
Cette fonction alloue de la mémoire pour une structure someData et un tampon de la longueur spécifiée. Le tableau de longueur nulle dans la structure nous permet de le traiter comme un pointeur, faisant référence au tampon alloué dynamiquement.
Pour refactoriser ce code, pensez à utiliser :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!