[英]C++ empty array size
我用三种不同的方式(在堆上或在堆栈上)初始化了一个数组,但与我的预期相反,它们的大小似乎有两个不同的值。 我不明白为什么。
int asd[0];
sizeof(asd); //ouput 0;
int asd={};
sizeof(asd); //output 4;
int *asd=new int[0];
sizeof(asd); //output 4;
由于数组名称是指向已分配存储块的指针,并且指针的大小为4,因此我认为输出2和3是正确的。
但是我不明白的是为什么输出1没有显示大小4。
您的最后两个示例不是数组;
第一个是: int asd[0]
定义了一个大小为0的数组,这是不允许的。
如果表达式是一个常量表达式,则其值应大于零。
第二个: int asd={};
使用汇总初始化int
。 int
4字节的大小。
第三个: int *asd=new int[0];
是int
类型的指针,指向动态分配的内存。 指针的大小为4 bytes
(2 ^ 32个地址)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.