看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 問題(Question): 比如說有一個 struct struct ggg { int len; void *data; }; 是否能在 malloc struct 的同時也 malloc data的大小1024 看起來像是 struct ggg *g = malloc (sizeof(struct ggg)+1024) 但沒辦法這樣做 請問是否能做呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.222.3
azureblaze:zero length array (gcc extension) 01/24 14:49
bibo9901:C99已經把zero-length array納入標準了 01/24 14:51
u8906250:謝謝 ^^ 沒用過還真不知道 01/24 15:38
johnpage:無法ㄧ次,只能做兩次 malloc 01/24 16:41
littleshan:C99 並不是 zero-length array 01/24 17:57
littleshan:標準寫法是這樣 struct ggg { int len; char data[]; } 01/24 17:58
littleshan:也就是不寫大小,這樣的array member只能放在最後面 01/24 17:59
bibo9901:感謝樓上指正 XD 01/24 19:29
pokia:有人知道為什麼char data[]才會成功,而char *data就不會呢 01/25 19:03
pokia:宣告成 pointer 和 array 的差別是? 01/25 19:06
azureblaze:array轉指標會取得該array開頭的位址,此例為最後面 01/25 19:20
azureblaze:指標就指標,預設是垃圾值,除非另外初始化他不然沒用 01/25 19:20
MasterChang:明確的給予malloc,不然你以後都不知道為何要這樣寫 01/26 10:17