我注意到,不允许创建零堆长的非堆分配数组。为什么零长度数组只允许分配堆?
// error: cannot allocate an array of constant length zero
char a[0];
我还注意到它允许创建零长度的堆分配数组。
// this is okay though
char *pa = new char[0];
我猜他们都是由标准保证的(我没有标准副本)。如果是这样,他们为什么如此不同?为什么不只是允许堆栈中的零长度数组(反之亦然)呢?
堆上的零长度数组是一个太小而不适合放入任何东西的瓶子。堆栈上的零长度数组就像坦克中两加仑水之间的空间...... :) – antlersoft