我们都知道,堆是向到高地址扩展的,栈是向低地址扩展的,那么堆和栈的地址那个高呢?
int _tmain(int argc, _TCHAR* argv[]) { int stack_val = 0; int* heap_ptr = new int(2); printf("stack address = %08x\n", &stack_val); printf("heap address = %08x\n", heap_ptr); getchar(); return 0; }
以上为Windows上的程序,结果栈低于地址,说明windows上内存是中间向两头增长的。
同样的程序在linux上,结果栈高于地址,说明linux上的内存是两头向中间增长的。
时间: 2024-10-08 15:47:27