zoukankan      html  css  js  c++  java
  • 【cpp】reference & copy constructor

    最近在看thinking in cpp

    其实不是因为闲,恰恰是以为太忙了,大块的时间没有了,只有一些零碎的时间,于是用来学点自己感兴趣的东西

    今天看到reference & copy constructor这一章

    这本书果然写的很通俗易懂,扫除了我的许多以前的知识盲点。

    看到了函数的return value保存在哪个地方的这一章,觉得很有意思

    于是做了个实验,研究了一下vs2008中编译出来的汇编代码

    最后想清楚了。return value是保存在stack上的

    先保存argument,在保存return value的指针

    然后再调用cal

    为什么这么做?

    可以放return value的地方:

    1. register。不够大

    2. 放在return address的下面。即return address先入栈,然后再把return values入栈。但是很危险,可能会被ISR抢占,然后清除掉return value

    3. 在栈中单独开辟一个区域放return value。和C不兼容

    采用的办法:在当前栈的空位置中给return value分配一块地方。然后把指向这个地方的指针当做该函数的一个参数压栈。返回值就写到这个指针指向的地方

    效率高

    明天再确认一下这个事情。

  • 相关阅读:
    读《大道至简》第二章有感
    《大道至简》读后感
    JAVA课后作业
    大道至简第三章观后感
    JAVA作业之两数的加减乘除
    JAVA作业之动手动脑
    第一次Java实验
    大道至简第二章观后感
    大道至简第一章观后感
    Django__admin的配置
  • 原文地址:https://www.cnblogs.com/chenhuanfa/p/3474006.html
Copyright © 2011-2022 走看看