在_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返回的其他任何指针不相同,对于零长度的数组来说,此指针就像尾后指针一样。我们可以像尾后迭代器一样使用这个指针。
陈皓博客C语言结构体里的成员数组和指针中,提到零长度数组意义。
在某一结构末尾如定义类似 char bytes[0] 的零长数组,表示该结构不定长,可通过数组的方式进行扩展。结构中必包含一个长度信息。结构本身类似于一个信息头。同时,此结构只能通过堆方式分配内存。
Reference
[1].http://blog.csdn.net/wade23/article/details/4510971
[2].http://coolshell.cn/articles/11377.html
时间: 2024-10-07 00:38:40