static的用途
1)限制變量的作用域:即在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變;
2)限制變量的存儲域:<a>在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量,可以被模塊內(nèi)的所有函數(shù)訪問,但不能被模塊外其它函數(shù)訪問,它是一個本地的局部變量;<b>在模塊內(nèi) ,一個被聲明為靜態(tài)的函數(shù)只能被這一個模塊內(nèi)的其他函數(shù)調(diào)用,那就是這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。
?
補(bǔ)充:一個代碼運(yùn)行時分為4個區(qū):
1)code區(qū):代碼
2)data:全局,靜態(tài),常量 ? 沒賦初值的值默認(rèn)為0
3)堆:new,malloc分配的內(nèi)存,需要delete,free釋放;如果不釋放,則只有等到 程序正常運(yùn)行結(jié)束時,由操作系統(tǒng)回收,理論上無限大。
4)棧:場景信息(函數(shù)的參數(shù),返回值,局部變量,臨時變量),VC的棧區(qū)默認(rèn)為4M。{例:int n[1024*1024]時會報錯,因?yàn)閕nt占四個字節(jié),1024為1M。所以總共占了4M,則系統(tǒng)資源不夠分為,所以報錯} ? 對大內(nèi)存的操作,需要放堆區(qū)(沒賦初值時值為無窮大)
如: ?棧區(qū)的空間自動分配自動釋放。
Stedent stu[4*1024*1024] 會出問題,應(yīng)改為:student *stu=new stu[4*1024*1024]?? 釋放:delete[] stu;
內(nèi)存異常:(1)使用非法空間<*p=&a;p=(int *)7;*p=8?? 將P指針強(qiáng)行指向7這個對象 ? 并賦值為8> ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)系統(tǒng)空間不夠分配
轉(zhuǎn)載于:https://www.cnblogs.com/wangliangliang/p/3181084.html
總結(jié)
- 上一篇: Vim 的补全模式加速器,轻松玩转全部
- 下一篇: [MySql] - 解决部署的服务器没有