在 C++ Primer动态数组中提到:动态分配一个空数组是合法的。
size_t n = get_size();int* p = new int[n];for(int* q = p; q != p + n; ++q)char arr[0];//错误char cp = new char[0];
当我们用new分配一个大小为0的数组时,new返回一个合法的非空指针。此指针保证与new返回的其他任何指针不相同,对于零长度的数组来说,此指针就像尾后指针一样。我们可以像尾后迭代器一样使用这个指针。
陈皓博客中,提到零长度数组意义。
在某一结构末尾如定义类似 char bytes[0] 的零长数组,表示该结构不定长,可通过数组的方式进行扩展。结构中必包含一个长度信息。结构本身类似于一个信息头。同时,此结构只能通过堆方式分配内存。
##Reference##
[1].
[2].