一、函數執行時使用??臻g作為自己的臨時棧,3種方式決定編譯器清空棧的方式:__stdcall、 __fastcall、__cdecl
1、__stdcall表示每個調用者負責清空自己調用的函數的臨時棧
???? __fastcall函數自己在返回前自己清空臨時棧,然后返回值退出
???? __cdecl表示所有調用者只有一個清空函數來負責清空所有被調用函數的臨時棧
2、這三種方式決定函數棧壓棧的參數順序,都是從右到左.
3、在window下,函數名前加_stdcall,它決定了函數的名字轉換方式.
?
二、關于臨時棧的總結
1.函數執行的時候有自己的臨時棧(在局部棧里).
???? C++成員函數擁有兩個??臻g,一個是函數本身的??臻g,另一個是對象的棧空間
???? 因為函數本身是在對象的??臻g里運行
???? C里函數只有一個??臻g
2.函數的參數就在臨時棧中.如果函數傳遞實參.則用來初始化臨時參數變量.
??不管哪種傳遞,實質傳遞的都是值,一般變量傳的是數據,而指針傳的是地址值??
3.通過寄存器返回值.(使用返回值返回數據)
4.通過參數返回值.(參數必須是指針)
? ?指針指向的區域必須事先分配.
5.如果參數返回指針.參數就是雙指針.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
