中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

視頻網(wǎng)站開發(fā)背景手機(jī)網(wǎng)站排名優(yōu)化

視頻網(wǎng)站開發(fā)背景,手機(jī)網(wǎng)站排名優(yōu)化,怎么修改網(wǎng)頁上的內(nèi)容,公司網(wǎng)站一年費(fèi)用C中低級(jí)內(nèi)存操作 C相較于C有一個(gè)巨大的優(yōu)勢(shì),那就是你不需要過多地?fù)?dān)心內(nèi)存管理。如果你使用面向?qū)ο蟮木幊谭绞?amp;#xff0c;你只需要確保每個(gè)獨(dú)立的類都能妥善地管理自己的內(nèi)存。通過構(gòu)造和析構(gòu),編譯器會(huì)幫助你管理內(nèi)存,告訴你什么時(shí)候需要進(jìn)…

C++中低級(jí)內(nèi)存操作

C++相較于C有一個(gè)巨大的優(yōu)勢(shì),那就是你不需要過多地?fù)?dān)心內(nèi)存管理。如果你使用面向?qū)ο蟮木幊谭绞?#xff0c;你只需要確保每個(gè)獨(dú)立的類都能妥善地管理自己的內(nèi)存。通過構(gòu)造和析構(gòu),編譯器會(huì)幫助你管理內(nèi)存,告訴你什么時(shí)候需要進(jìn)行內(nèi)存操作。將內(nèi)存管理隱藏在類中顯著提高了可用性,這一點(diǎn)在標(biāo)準(zhǔn)庫類中得到了很好的體現(xiàn)。

然而,在某些應(yīng)用程序或遺留代碼中,你可能會(huì)遇到需要更低級(jí)別地操作內(nèi)存的情況。無論是出于遺留代碼、效率、調(diào)試還是好奇心,了解如何操作原始字節(jié)總是有幫助的。

指針

C++編譯器會(huì)使用指針的聲明類型來允許你進(jìn)行指針?biāo)阈g(shù)。如果你聲明了一個(gè)指向整數(shù)的指針并將其增加1,那么這個(gè)指針在內(nèi)存中前進(jìn)的距離是整數(shù)的大小,而不是一個(gè)單一的字節(jié)。這種操作對(duì)數(shù)組最有用,因?yàn)閿?shù)組包含的數(shù)據(jù)是類型一致且在內(nèi)存中連續(xù)的。

例如,假設(shè)你在自由存儲(chǔ)區(qū)聲明了一個(gè)整數(shù)數(shù)組:

int* myArray { new int[8] };

你可能已經(jīng)熟悉了以下用于設(shè)置索引為2的值的語法:

myArray[2] = 33;

通過使用指針?biāo)阈g(shù),你也可以使用以下等效的語法,該語法獲取到myArray“向前兩個(gè)整數(shù)”處的內(nèi)存的指針,然后解引用它以設(shè)置該值:

*(myArray + 2) = 33;

作為訪問單個(gè)元素的另一種語法,指針?biāo)阈g(shù)看起來可能不太吸引人。但其真正的力量在于,像myArray+2這樣的表達(dá)式仍然是一個(gè)指向整數(shù)的指針,因此可以表示一個(gè)更小的整數(shù)數(shù)組。

讓我們通過一個(gè)使用寬字符串的例子來看看。寬字符串支持所謂的Unicode字符,以表示例如日語字符串。wchar_t類型是一個(gè)可以容納這種Unicode字符的字符類型,并且通常比char要大;也就是說,它不僅僅是一個(gè)字節(jié)。要告訴編譯器一個(gè)字符串字面量是一個(gè)寬字符串字面量,可以在其前面加上一個(gè)L。

例如,假設(shè)你有以下寬字符串:

const wchar_t* myString { L"Hello, World" };

進(jìn)一步假設(shè)你有一個(gè)函數(shù),該函數(shù)接受一個(gè)寬字符串并返回一個(gè)包含輸入字符串大寫版本的新字符串:

wchar_t* toCaps(const wchar_t* text);

請(qǐng)記住,C風(fēng)格的字符串是以零結(jié)尾的,即它們的最后一個(gè)元素包含\0。因此,沒有必要在函數(shù)中添加一個(gè)大小參數(shù)來指定輸入字符串的長度。該函數(shù)只需不斷地迭代字符串的各個(gè)字符,直到遇到\0字符為止。

通過將myString傳遞給toCaps()函數(shù),你可以將其全部轉(zhuǎn)換為大寫。然而,如果你只想部分地大寫化myString,你可以使用指針?biāo)阈g(shù)來僅引用字符串的后一部分。下面的代碼通過僅向指針加7來調(diào)用toCaps()函數(shù),以處理寬字符串中的“World”部分,盡管wchar_t通常超過1個(gè)字節(jié):

toCaps(myString + 7);

另一個(gè)有用的指針?biāo)阈g(shù)應(yīng)用涉及到減法。從同一類型的另一個(gè)指針中減去一個(gè)指針會(huì)給你兩個(gè)指針之間指向類型的元素?cái)?shù)量,而不是它們之間的絕對(duì)字節(jié)數(shù)。

自定義內(nèi)存管理

在你將遇到的99%(有人可能會(huì)說100%)的情況中,C++中的內(nèi)置內(nèi)存分配功能是足夠的。在幕后,newdelete完成了以適當(dāng)大小的塊分配內(nèi)存、維護(hù)可用內(nèi)存區(qū)域列表以及在刪除時(shí)將內(nèi)存塊釋放回該列表的所有工作。但是,當(dāng)資源約束非常緊張,或者在非常特殊的條件下,例如管理共享內(nèi)存,實(shí)施自定義內(nèi)存管理可能是一個(gè)可行的選項(xiàng)。不用擔(dān)心,這并不像聽起來那么可怕。

基本上,自己管理內(nèi)存意味著類會(huì)分配一大塊內(nèi)存,并根據(jù)需要將該內(nèi)存分配出去。這種方法有什么好處呢?管理自己的內(nèi)存可能會(huì)減少開銷。當(dāng)你使用new來分配內(nèi)存時(shí),程序還需要預(yù)留一小部分空間以記錄分配了多少內(nèi)存。這樣,當(dāng)你調(diào)用delete時(shí),可以釋放適當(dāng)數(shù)量的內(nèi)存。對(duì)于大多數(shù)對(duì)象,開銷比分配的內(nèi)存小得多,因此影響甚微。然而,對(duì)于小對(duì)象或有大量對(duì)象的程序,開銷可能會(huì)產(chǎn)生影響。當(dāng)你自己管理內(nèi)存時(shí),你可能會(huì)提前知道每個(gè)對(duì)象的大小,因此你可能能夠避免每個(gè)對(duì)象的開銷。對(duì)于大量的小對(duì)象來說,差異可能是巨大的。

執(zhí)行自定義內(nèi)存管理需要重載newdelete操作符。

垃圾收集

在支持垃圾收集的環(huán)境中,程序員很少(如果有的話)明確釋放與對(duì)象關(guān)聯(lián)的內(nèi)存。相反,不再有任何引用的對(duì)象將在某個(gè)時(shí)候被運(yùn)行時(shí)庫自動(dòng)清理。垃圾收集沒有像在C#和Java中那樣內(nèi)置到C++語言中。在現(xiàn)代C++中,你使用智能指針來管理內(nèi)存,而在遺留代碼中,你將看到通過newdelete在對(duì)象級(jí)別進(jìn)行內(nèi)存管理。

諸如shared_ptr這樣的智能指針提供了與垃圾收集內(nèi)存非常相似的東西;也就是說,當(dāng)某一資源的最后一個(gè)shared_ptr實(shí)例被銷毀時(shí),該資源也會(huì)在那個(gè)時(shí)刻被銷毀。在C++中實(shí)現(xiàn)真正的垃圾收集是可能但不容易的,但釋放自己從釋放內(nèi)存的任務(wù)中可能會(huì)引入新的問題。

標(biāo)記-清除垃圾收集

一種垃圾收集的方法被稱為“標(biāo)記-清除”(Mark and Sweep)。在這種方法下,垃圾收集器會(huì)周期性地檢查程序中的每一個(gè)指針,并標(biāo)注哪些內(nèi)存仍然在使用中。在周期結(jié)束時(shí),任何沒有被標(biāo)記的內(nèi)存被認(rèn)為是不再使用的,并會(huì)被釋放。在C++中實(shí)現(xiàn)這樣的算法并不簡單,如果做錯(cuò)了,可能比使用delete更容易出錯(cuò)!

盡管在C++中已經(jīng)有了安全且簡單的垃圾收集機(jī)制的嘗試,但即使有了完美的C++垃圾收集實(shí)現(xiàn),也不一定適用于所有應(yīng)用程序。垃圾收集的缺點(diǎn)包括:

  • 當(dāng)垃圾收集器正在運(yùn)行時(shí),程序可能變得無響應(yīng)。
  • 在使用垃圾收集器的情況下,你會(huì)遇到所謂的“非確定性析構(gòu)函數(shù)”。因?yàn)橐粋€(gè)對(duì)象在被垃圾收集之前不會(huì)被銷毀,所以析構(gòu)函數(shù)在對(duì)象離開其作用域時(shí)不會(huì)立即執(zhí)行。這意味著,由析構(gòu)函數(shù)完成的資源清理(例如關(guān)閉文件、釋放鎖等)直到未來某個(gè)不確定的時(shí)間才會(huì)被執(zhí)行。

編寫垃圾收集機(jī)制是非常困難的。你很可能會(huì)做錯(cuò),而且很可能會(huì)很慢。因此,如果你確實(shí)想在你的應(yīng)用程序中使用垃圾收集內(nèi)存,我強(qiáng)烈建議你研究現(xiàn)有的專門的垃圾收集庫,并重用它們。

對(duì)象池

垃圾收集就像是為野餐購買盤子,并將用過的盤子留在院子里,以便某人在某個(gè)時(shí)候?qū)⑺鼈儞炱饋聿⑷拥???隙ㄓ懈h(huán)保的內(nèi)存管理方法。對(duì)象池就是回收的等價(jià)物。你購買了一定數(shù)量的盤子,使用過一個(gè)盤子后,你將其清洗,以便以后可以再次使用。

對(duì)象池是理想的解決方案,適用于你需要在一段時(shí)間內(nèi)多次使用相同類型的多個(gè)對(duì)象,并且每次創(chuàng)建都會(huì)產(chǎn)生開銷的情況。

http://www.risenshineclean.com/news/41063.html

相關(guān)文章:

  • 基礎(chǔ)微網(wǎng)站開發(fā)口碑好seo基礎(chǔ)入門
  • 信譽(yù)好的武漢網(wǎng)站建設(shè)seo課培訓(xùn)
  • 怎么使用vs2017做網(wǎng)站關(guān)鍵詞排名怎么快速上去
  • 百度做的網(wǎng)站字體侵權(quán)百度一下百度主頁官網(wǎng)
  • 爐石做任務(wù)抽獎(jiǎng)網(wǎng)站windows優(yōu)化大師下載安裝
  • WordPress潮流媒體主題sem推廣和seo的區(qū)別
  • 溫州市手機(jī)網(wǎng)站制作班級(jí)優(yōu)化大師官方免費(fèi)下載
  • wordpress欄目圖片seo上排名
  • wordpress獨(dú)立博客免費(fèi)seo視頻教程
  • 哲學(xué)專業(yè)特色建設(shè)網(wǎng)站谷歌搜索廣告優(yōu)化
  • 畢業(yè)論文做cad圖的網(wǎng)站江蘇網(wǎng)頁設(shè)計(jì)
  • 網(wǎng)站投訴平臺(tái)寧波seo快速排名
  • WordPress可以做社交網(wǎng)站嘛網(wǎng)絡(luò)平臺(tái)怎么創(chuàng)建
  • 溫州做網(wǎng)站設(shè)計(jì)網(wǎng)絡(luò)營銷類型有哪些
  • 滑動(dòng) 手機(jī)網(wǎng)站 代碼優(yōu)化人員配置
  • wordpress添加友情練級(jí)濟(jì)南seo網(wǎng)絡(luò)優(yōu)化公司
  • wordpress視頻站主題百度一下你就知道下載
  • 明年做哪個(gè)網(wǎng)站致富站長工具seo綜合查詢降級(jí)
  • 抖音短視頻代運(yùn)營公司太原seo網(wǎng)絡(luò)優(yōu)化招聘網(wǎng)
  • 鄭州市熱點(diǎn)新聞優(yōu)化游戲卡頓的軟件
  • 公司網(wǎng)站制作 步驟seo優(yōu)化師是什么
  • 網(wǎng)站備案值得嗎常見的搜索引擎
  • 做機(jī)械設(shè)計(jì)的要知道哪些網(wǎng)站產(chǎn)品優(yōu)化是什么意思
  • 深圳外貿(mào)網(wǎng)站建設(shè)公司企業(yè)管理培訓(xùn)班
  • 濟(jì)南哪里有建網(wǎng)站seo公司怎樣找客戶
  • 網(wǎng)站上的截圖怎么做動(dòng)態(tài)網(wǎng)站的制作與設(shè)計(jì)
  • 玉溪網(wǎng)絡(luò)推廣 網(wǎng)站建設(shè)國外網(wǎng)站加速
  • 寧波做日用品外貿(mào)公司網(wǎng)站百度搜索引擎原理
  • 湖北網(wǎng)站建設(shè)找哪家如何做好營銷推廣
  • asp.net網(wǎng)站安全太原網(wǎng)站制作優(yōu)化seo公司