Я изучаю 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
Однако, насколько я могу судить, и onStack
, и onHeap
являются просто int
указателями, верно?Я знаю, что вы не должны / не можете использовать оператор sizeof()
для получения размера массива, но просто из любопытства, почему он ведет себя по-разному, в зависимости от того, находится ли массив в стекеили в кучу?