我注意到,不允許創建零堆長的非堆分配數組。爲什麼零長度數組只允許分配堆?
// error: cannot allocate an array of constant length zero
char a[0];
我還注意到它允許創建零長度的堆分配數組。
// this is okay though
char *pa = new char[0];
我猜他們都是由標準保證的(我沒有標準副本)。如果是這樣,他們爲什麼如此不同?爲什麼不只是允許堆棧中的零長度數組(反之亦然)呢?
堆上的零長度數組是一個太小而不適合放入任何東西的瓶子。堆棧上的零長度數組就像坦克中兩加侖水之間的空間...... :) – antlersoft