以下代码在64位系统resease和debug版本中,a和c的地址差是不一样的因为会被优化,一个int在64位操作系统下占4个字节
32系统调用函数是通过栈来传递参数的,a,b,c放在函数的栈中,打印栈的地址。在64位系统中函数传递参数绝大多数不是栈是通过寄存器传输的减少栈的使用,所以64位系统速度快可使用的寄存器数变大。
不打印b的地址根本不会和函数的寄存器发生作用,需要打印地址才会在寄存器中预留空间,在debug会a,b,c都预留了而发布版本只预留了a和c

不同编译版本在64位操作系统下对寄存器的优化
不同编译版本在64位操作系统下对寄存器的优化

相关文章:

  • 2022-12-23
  • 2021-11-14
  • 2021-12-28
  • 2021-12-03
  • 2021-09-19
  • 2021-11-15
  • 2022-12-23
  • 2021-08-03
猜你喜欢
  • 2022-01-25
  • 2021-10-31
  • 2022-12-23
  • 2021-11-15
  • 2021-07-13
  • 2021-04-11
  • 2022-12-23
相关资源
相似解决方案