sizeof 在数组创建后在 C++ 中工作不寻常

sizeof works unusual at c++ after array creation

本文关键字:工作 不寻常 C++ 数组 创建 sizeof      更新时间:2023-10-16

可能的重复项:
如何查找 sizeof(指向数组的指针)

我正在使用以下代码创建一个数组

float *A;
A = (float *) malloc(100*sizeof(float));
float *B;
B = (float *) malloc(100*sizeof(float));

但是在这些之后,当我通过以下内容键入 A 和 B 的大小时,我得到 2 的结果,因为我希望看到 100。

sizeof(A)/sizeof(float)

你的期望是错误的。 A是一个float*,所以它的大小将是sizeof(float*)的,不管你实际如何分配它。

如果你有一个静态数组 - 即 float A[100],那么这将起作用。

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

最坏的情况是使用 new[] .绝对不要使用malloc.

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

您在示例中得到的只是指向float的指针的大小除以 float 的大小。