iamexe
iamexe
2015-12-02 16:11

c/c++ 函数调用中形参为指针或者引用对栈操作问题

  • 实参 形参
  • 汇编
  • c++
  • 指针

问题引出:
当我们的函数参数为普通变量或指针时,我们在调用过程中会拷贝一个副本,而当形参为引用时不会拷贝一个副本。
当形参为普通变量时,会拷贝一个变量备份,当为指针时会拷贝一个指针备份,指针指向的内容不会拷贝

问题来了:
查看使用指针和使用引用的方式调用的函数的汇编代码,会发现在汇编代码层面实现方式是一模一样的,都是:
lea eax,[i](假设i是整形变量)

push eax

而使用值传递方式是:
mov eax,dword ptr [i] (假设i是整形变量)
push eax
-----但是为什么使用指针传递需要拷贝一个指针的备份(4个字节),而使用引用不会产生拷贝。。

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答