使用sizeof()时输出不正确

时间:2015-10-17 15:20:46

标签: c++

我正在定义我的结构:

struct Shape {
unsigned int l;  // value for length 
unsigned int h;  // value or height
unsigned int b;  // value for breadth
};

在我的程序中,我动态分配了一个Shape实例:

Shape *image = new Shape[i];

我试图打印出它的大小:

cout<< "The size of image is " << sizeof(image)<< ends;

无论i的值是什么,我都得到相同的输出:(例如:0,1,2,10)

The size of the image is 8

为什么会这样?

注意:但是当我将sizeof运算符应用于Shape结构时,我得到了正确答案:

sizeof(Shape) -> returns 12

2 个答案:

答案 0 :(得分:4)

image类型为Shape*,不属于Shape类型,因此sizeof(image)的大小为Shape*

请尝试sizeof(*image)

答案 1 :(得分:3)

The size of the image is 8
     

为什么会这样?

输出正确,sizeof(image)给出指针变量Shape*本身的大小,而不是分配数组的大小。