日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
瓦解C++標(biāo)準(zhǔn)庫(kù)幾大難點(diǎn)

在C++標(biāo)準(zhǔn)庫(kù)中,有關(guān)缺省變量值的限制非常模糊。基于此,很多編譯器允許開(kāi)發(fā)人員將缺省變量值包含在函數(shù)聲明,指向函數(shù)的指針和引用,成員函數(shù)的指針,以及typedef聲明中。

成都創(chuàng)新互聯(lián)主營(yíng)溫泉網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā)公司,溫泉h5微信小程序搭建,溫泉網(wǎng)站營(yíng)銷推廣歡迎溫泉等地區(qū)企業(yè)咨詢

例外一種需要更好的內(nèi)存控制的情況是:需要在有限資源的情況下長(zhǎng)時(shí)間不間斷運(yùn)行的程序。實(shí)時(shí)系統(tǒng)經(jīng)常需要用最少的耗費(fèi)來(lái)獲取有保證的可預(yù)期的內(nèi)存。這也就導(dǎo)致了更好的內(nèi)存控制的需要。#t#

一般來(lái)說(shuō),這些程序都避免使用動(dòng)態(tài)的內(nèi)存分配,而使用特殊目的的內(nèi)存分配器來(lái)管理有限資源。此外,還有一些情況下由于硬件或系統(tǒng)的要求,需要將對(duì)象放在指定的內(nèi)存位置。這也需要進(jìn)行定制的內(nèi)存管理(通過(guò)重載new來(lái)加以實(shí)現(xiàn))。

當(dāng)分配內(nèi)建(built-in)類型的對(duì)象、未包含用戶自定義的new操作符函數(shù)的類對(duì)象、任何類型的數(shù)組時(shí),使用全局new操作符函數(shù)。當(dāng)在類中自定義C++標(biāo)準(zhǔn)庫(kù),分配該類對(duì)象的內(nèi)存時(shí),調(diào)用該類的new操作符。如下:

 
 
 
  1. #include  
  2. #include  
  3. class Blanks  
  4. {  
  5. public:  
  6. Blanks(){}  
  7. void *operator new( size_t stAllocateBlock, char chInit );  
  8. };  
  9. void *Blanks::operator new( size_t stAllocateBlock, char chInit )  
  10. {  
  11. void *pvTemp = malloc( stAllocateBlock );  
  12. if( pvTemp != 0 )  
  13. memset( pvTemp, chInit, stAllocateBlock );  
  14. return pvTemp;  
  15. }  
  16. int main()  
  17. {  
  18. Blanks *a5 = new( 0xa5 ) Blanks;//創(chuàng)建對(duì)象Blanks,并且初試化為0xa5  
  19. return a5 != 0;  

new操作符可以重載,而delete卻不行。因?yàn)榈鹊叫枰尫诺臅r(shí)候,我們所能得到的就是一個(gè)指針。而且該指針可能不是原先的對(duì)象類型指針(有可能進(jìn)行了類型轉(zhuǎn)換)。實(shí)際上,當(dāng)使用new獲得一個(gè)指向一片內(nèi)存的指針時(shí),在該片內(nèi)存前有一個(gè)指示器(indicator),記錄實(shí)際分配的內(nèi)存數(shù)量。當(dāng)調(diào)用delete時(shí),可以獲知需要釋放的內(nèi)存大小。數(shù)組的釋放(Deallocating Arrays):

 
 
 
  1.  void f( )  
  2. {  
  3. X* p1 = new X[10];  
  4. //...  
  5. delete [] X;  

為什么不使用delete [10] X;來(lái)釋放內(nèi)存?Bjarne Stroustrup稱這種做法容易導(dǎo)致錯(cuò)誤,而將記錄元素個(gè)數(shù)的任務(wù)放在delete的實(shí)現(xiàn)中了。至于為什么C++中未內(nèi)建垃圾收集器(Garbage Collection)的原因,看《C++語(yǔ)言的設(shè)計(jì)和演化》(En) Bjarne Stroustrup 機(jī)械工業(yè)出版社(俗稱:D&E)可以得到答案。

此外,C++標(biāo)準(zhǔn)庫(kù)中提供了一種智能型指針auto_ptr,這種指針可以幫助我們防止“被異常拋出時(shí)發(fā)生資源泄漏”。但是缺點(diǎn)是該智能型指針不能指向數(shù)組,因?yàn)槠鋬?nèi)部釋放內(nèi)存是通過(guò)delete而非delete [] 來(lái)進(jìn)行的。

所以,只能使用其來(lái)指向一個(gè)單個(gè)對(duì)象。模板部分是C++中比較難的部分,也是C++的魅力所在。以下文字是我以前看過(guò)的,具體出處不清楚了。今天稍微整理了一下,作為模板介紹的一個(gè)單元。


網(wǎng)頁(yè)標(biāo)題:瓦解C++標(biāo)準(zhǔn)庫(kù)幾大難點(diǎn)
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/codihhd.html