inline函数包涵static变量,调用时是否会有多份拷贝
生活随笔
收集整理的這篇文章主要介紹了
inline函数包涵static变量,调用时是否会有多份拷贝
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
inline?? int?? static_test()
{
????? static?? int?? i?? =0;
????? ...
}
inline?? 代表編譯時(shí)代碼拷貝,也就有多份副本了,但在VC中測試,i只有一份副本,那么編譯器是如何實(shí)現(xiàn)的:
?
1.代碼拷貝不一定是c代碼的拷貝吧,可以是編譯后的匯編代碼的拷貝。而函數(shù)在代碼段,變量則在數(shù)據(jù)段。拷貝的只是函數(shù)部分。靜態(tài)變量在函數(shù)部分保存的僅僅是該變量的地址。
2.static變量不是放在棧里的,是放在靜態(tài)數(shù)據(jù)區(qū).和全局變量存放在一起.不能將它和局部變量混為一談。
總結(jié)
以上是生活随笔為你收集整理的inline函数包涵static变量,调用时是否会有多份拷贝的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单道理
- 下一篇: 记录一些比较有趣的网站,来给自己的网站设