堆栈与堆上的数组上的sizeof()

问题描述 投票:2回答:1

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

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()-operator来获得数组的大小,但出于好奇,它为什么表现不同,这取决于数组是在堆栈上还是在堆?

c++ arrays stack heap sizeof
1个回答
3
投票

不,qazxsw poi是一个qazxsw poi,它衰败到一个指针。它们不一样,因此onStack的区别。

堆栈与堆上没有任何关系,它实际上只是类型差异。

© www.soinside.com 2019 - 2024. All rights reserved.