sizeof在创建数组后在c ++中运行异常

时间:2013-01-27 00:26:59

标签: c++ arrays sizeof

  

可能重复:
  How to find the sizeof(a pointer pointing to an array)

我使用以下代码

创建数组
float *A;
A = (float *) malloc(100*sizeof(float));
float *B;
B = (float *) malloc(100*sizeof(float));

但在这些之后,当我按下面的方式输入A和B大小的打印件时,我得到2,因为我希望看到100。

sizeof(A)/sizeof(float)

2 个答案:

答案 0 :(得分:11)

你的期望是错误的。 Afloat*,因此无论您如何实际分配它,其大小都将为sizeof(float*)

如果你有一个静态数组 - 即float A[100],那么这就行了。

由于这是C ++,请使用std::arraystd::vector

最糟糕的情况是,使用new[]绝对不要使用malloc

答案 1 :(得分:4)

这仅适用于在当前范围内定义的静态数组。

您的示例中的所有内容都是指向float的指针的大小除以float的大小。