sizeof()在堆栈上的阵列与堆上的尺寸
sizeof() on arrays on stack vs. on heap
我正在学习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()
- 操纵器来获得数组的大小,但是只是出于好奇,为什么它的行为会有所不同,具体取决于阵列是在堆栈上还是在堆栈上堆?
no, onStack
是 int[5]
wich with to pointer。它们不一样,因此sizeof
差异。
在堆上与堆上无关,它实际上只是键入差异。
相关文章:
- OpenMP阵列性能较差
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 算法问题:查找从堆栈中弹出的所有序列
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 我可以在堆栈上分配`std :: array`阵列,而不知道编译时大小
- 通过"Value Template Argument"与常规阵列在堆栈中分配内存
- 加载到阵列中会导致堆栈粉碎,同时有足够的空间
- 安全分配堆栈分配的阵列
- sizeof()在堆栈上的阵列与堆上的尺寸
- C++基于阵列的堆栈
- 为什么我会看到在堆和堆栈上分配的阵列之间的不同行为
- 全局阵列分配 -- 堆栈或堆
- 使用小型2D阵列会导致堆栈溢出(main之前的seg错误)
- 阵列和阵列堆栈之间的区别
- C++堆栈和2D阵列
- 阵列周围的堆栈已损坏C++
- 2D阵列100x100堆栈溢出;堆上没有错误.c++
- 堆阵列分配而不是堆栈上的堆数组分配