我们都知道,堆是向到高地址扩展的,栈是向低地址扩展的,那么堆和栈的地址那个高呢?

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上的内存是两头向中间增长的。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-03-06
  • 2022-12-23
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
  • 2022-01-09
猜你喜欢
  • 2021-07-05
  • 2021-04-12
  • 2021-10-21
  • 2022-12-23
  • 2021-08-23
  • 2022-12-23
  • 2021-07-26
相关资源
相似解决方案