我正在学习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
然而,据我所知,onStack
和onHeap
都只是int
指针,对吧?我知道你不应该/不能真正使用sizeof()
-operator来获得数组的大小,但出于好奇,它为什么表现不同,这取决于数组是在堆栈上还是在堆?
不,qazxsw poi是一个qazxsw poi,它衰败到一个指针。它们不一样,因此onStack
的区别。
堆栈与堆上没有任何关系,它实际上只是类型差异。