typedef struct Item
{
DATA data; // 你想要儲存的一些屬性等
int iSize; // 後續資料的大小
char acData[1]; // 從這裡開始記錄你的資料
} Item;
每次為一個新的 Item 申請空間時,申請大小為:
sizeof(Item) + iDataSize
這裡的 iDataSize 就是你想儲存的活用空間大小。
呼叫的時候,直接寫結構體的 acData[n] 就可以了,可能會浪費幾個位元組的空間,但這些應該可以忽略。
原理是將 acData[0] 當作資料開始的部分,而 acData[n] 雖然越界了,但在你申請的空間範圍內,所以不會有問題。
另外一種方法是在結構體裡宣告一個指標,用指標來記錄資料的位置。
typedef struct Item
{
DATA data; // 你想要儲存的一些屬性等
int iSize; // 後續資料的大小
char acData[1]; // 從這裡開始記錄你的資料
} Item;
每次為一個新的 Item 申請空間時,申請大小為:
sizeof(Item) + iDataSize
這裡的 iDataSize 就是你想儲存的活用空間大小。
呼叫的時候,直接寫結構體的 acData[n] 就可以了,可能會浪費幾個位元組的空間,但這些應該可以忽略。
原理是將 acData[0] 當作資料開始的部分,而 acData[n] 雖然越界了,但在你申請的空間範圍內,所以不會有問題。
另外一種方法是在結構體裡宣告一個指標,用指標來記錄資料的位置。