sizeof()在堆栈上的阵列与堆上的尺寸

sizeof() on arrays on stack vs. on heap

本文关键字:阵列 堆栈 sizeof      更新时间:2023-10-16

我正在学习C ,并且我注意到sizeof()操作器在堆栈和堆上的数组上的工作方式不同。例如:

int onStack[5];
int* onHeap = new int[5];
std::cout << "sizeof(onStack)=" << sizeof(onStack) << std::endl;
std::cout << "sizeof(onHeap)=" << sizeof(onHeap) << std::endl;

生成输出

sizeof(onStack)=20
sizeof(onHeap)=4

但是,据我所知,onStackonHeap都只是int指针,对吗?我知道您不应该/不能真正使用sizeof() - 操纵器来获得数组的大小,但是只是出于好奇,为什么它的行为会有所不同,具体取决于阵列是在堆栈上还是在堆栈上堆?

no, onStackint[5] wich with to pointer。它们不一样,因此sizeof差异。

在堆上与堆上无关,它实际上只是键入差异。