使用零長度數組重構結構
在遺留程式碼中,遇到包含零長度數組的結構並不罕見。這種非常規的做法可能會引起擔憂並阻礙程式碼重構工作。本文探討了零長度數組背後的原因,並提供了重建它們的建議。
零長度數組的原因和用途
結構中的零長度數組作為指向動態分配記憶體的指標。這種技術被稱為“C-Hack”,在較舊的編譯器中用於建立任意長度的陣列。透過聲明一個包含零個元素的數組,編譯器提供了一個指向該數組可能存在的記憶體位置的指標。這允許開發人員透過動態分配在運行時控制數組的大小。
替代方法:動態分配
在現代 C 中建立任意長度的陣列在不訴諸零長度陣列的環境中,使用動態記憶體分配。下面是一個範例函數,它使用指定長度的陣列分配 someData 結構:
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) + size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
此函數為結構及其數組分配內存,初始化 nData 成員,並傳回指向分配的結構的指標。
重構建議
重建結構零長度數組,請按照以下步驟操作:
以上是如何重構舊 C/C 程式碼中包含零長度數組的結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!