麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

從匯編看c++函數靜態static關鍵字在使用中的說明

2020-02-24 14:35:18
字體:
來源:轉載
供稿:網友

從匯編看c++函數靜態static關鍵字在使用中的說明,c++中的static關鍵字使得函數里面的局部變量的存活期不在局限于函數里面,而是變為在整個程序生命期里面都有效,下面從匯編語言看其原理。

下面是c++源代碼:


void add() {
??? static int i = 1;
??? i++;
}
int main() {
?? add();

}


下面是main對應的匯編碼

?

?


; 5??? : int main() {

?

??? push??? ebp
??? mov??? ebp, esp

; 6??? :??? add();

??? call??? ?add@@YAXXZ??????????????? ; 調用add

; 7??? :???
; 8??? : }

??? xor??? eax, eax
??? pop??? ebp
??? ret??? 0


下面是add函數對應的匯編碼:

?

?


; 1??? : void add() {

?

??? push??? ebp
??? mov??? ebp, esp

; 2??? :???? static int i = 1;
; 3??? :???? i++;

??? mov??? eax, DWORD PTR ?i@?1??add@@YAXXZ@4HA;取變量i的值
??? add??? eax, 1;執行加法
??? mov??? DWORD PTR ?i@?1??add@@YAXXZ@4HA, eax;存變量i的值

; 4??? : }

??? pop??? ebp
??? ret??? 0


可以看,不論是main函數,還是add函數里面,我們都看不到為i分配存儲空間,也就是說,i不在他們的調用棧里面。

?

再看下面的匯編碼:


_DATA??? SEGMENT
?i@?1??add@@YAXXZ@4HA DD 01H??????????????? ; 為變量i聲明存儲空間
; Function compile flags: /Odtp
_DATA??? ENDS


這條語句為i預先分配了存儲空間,并且在上面兩個函數匯編碼的外面定義。因此,函數里面由static關鍵字修飾的變量生命期存在于整個程序里面,但是,可見性依然只在add函數里面,在外面訪問不到.

以上就是從匯編看c++函數靜態static關鍵字在使用中的說明,想必都已有了一定的了解,更多關于c++的內容請繼續關注武林技術頻道。

?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 亚洲人成综合第一网 | 久久久一二三 | 337p粉嫩大胆噜噜噜亚瑟影院 | 精品欧美一区二区精品久久 | 一本色道久久综合狠狠躁篇适合什么人看 | 成人午夜免费福利 | 欧美 国产 亚洲 卡通 综合 | 国产精品99精品 | 一区二区三区视频在线观看 | 成人免费福利视频 | fc2国产成人免费视频 | 天天骑夜夜操 | 成人在线观看免费 | av国产免费| 日韩a毛片免费观看 | 国产一区二区不卡视频 | 牛牛a级毛片在线播放 | 黄色网址免费进入 | 日本在线播放一区二区三区 | 一级黄色淫片 | 成人免费观看av | 少妇色诱麻豆色哟哟 | 一级做a爱片性色毛片 | 免费看成年人网站 | 国产精品久久久久久久久久久久久久久 | 日韩av电影在线免费观看 | 黄视频免费在线观看 | 国产成人综合在线视频 | 中文字幕在线观看1 | 视频一区二区国产 | 国产精品麻豆91 | 久久久www成人免费精品 | 久久免费视频8 | 日本aⅴ在线 | 国产精品999在线观看 | 国产精品午夜小视频观看 | 国产精品一区在线观看 | 黄色试看视频 | 亚洲免费在线看 | www亚洲| 成人激情综合网 |