小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C++程序設(shè)計(jì)的存儲(chǔ)設(shè)計(jì)思想

 thchen0103 2017-04-16

程序中,在數(shù)據(jù)聲明中定義的變量和數(shù)組,它們存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)或者動(dòng)態(tài)存儲(chǔ)區(qū),其空間由系統(tǒng)負(fù)責(zé)分配,最終也由系統(tǒng)負(fù)責(zé)回收,分配時(shí)機(jī)和回收時(shí)機(jī)用戶(hù)無(wú)法控制。另外,它們都有自己的名字(因?yàn)槎x時(shí)有命名),程序中可以通過(guò)變量名或數(shù)組名訪問(wèn)它們。

而“動(dòng)態(tài)分配”的變量或數(shù)組,分配時(shí)機(jī)和釋放時(shí)機(jī)可完全由程序員自己決定。另外,“動(dòng)態(tài)分配”的空間,由于沒(méi)有數(shù)據(jù)分明,因此這部分空間沒(méi)有名字,無(wú)法像使用變量或數(shù)組那樣通過(guò)變更名或數(shù)組名引用其中的數(shù)據(jù),只能通過(guò)指針變量來(lái)訪問(wèn)。

對(duì)于數(shù)據(jù)在內(nèi)存中的存儲(chǔ),C語(yǔ)言提供了3種策略,即靜態(tài)分配、自動(dòng)分配(棧式分配)和動(dòng)態(tài)分配。

1 靜態(tài)分配:靜態(tài)分配由編譯器自動(dòng)分配和釋放,在編譯時(shí)就確定了運(yùn)行時(shí)變量在內(nèi)存中的位置。這種性質(zhì)允許變量在整個(gè)程序的運(yùn)行過(guò)程中都不消失。在C語(yǔ)言中使用關(guān)鍵字static來(lái)定義靜態(tài)變量(可以是靜態(tài)局部變量、靜態(tài)全局變量或者在所有函數(shù)外面定義的全局變量)。

靜態(tài)存儲(chǔ)區(qū)是指存儲(chǔ)單元在程序運(yùn)行的整個(gè)過(guò)程中一直分配給某些變量,這些變量一直“靜靜地”占有這些單元,一直都不釋放,直到程序運(yùn)行結(jié)束。

2 自動(dòng)內(nèi)存分配(在棧上分配):自動(dòng)分配同樣也是由編譯器自動(dòng)分配和釋放,在編譯時(shí)并不確定變量在內(nèi)存中的位置,而是在調(diào)用函數(shù)時(shí)給變量分配空間,函數(shù)返回時(shí)釋放空間。C編譯器通過(guò)系統(tǒng)棧來(lái)管理這樣的變量。在C語(yǔ)言中,auto型變量是通過(guò)棧來(lái)管理的,不需要人為管理。

動(dòng)態(tài)存儲(chǔ)區(qū)是指存儲(chǔ)單元在程序運(yùn)行的不同時(shí)間可以分配不同的數(shù)據(jù)。需要時(shí)開(kāi)辟單元,不需要時(shí)就釋放該單元。這樣某單元就可以在不同的時(shí)間分配給不同的變量,如函數(shù)里auto類(lèi)型的局部變量就是這樣,調(diào)用函數(shù)時(shí),分配變量空間,退出函數(shù)時(shí)釋放該空間。再調(diào)用時(shí),再開(kāi)辟...

3 動(dòng)態(tài)內(nèi)存分配(在堆上分配):動(dòng)態(tài)分配是指在程序運(yùn)行過(guò)程中動(dòng)態(tài)申請(qǐng)內(nèi)存的方法。這樣的內(nèi)存空間是從一個(gè)叫做堆的空間申請(qǐng)的,申請(qǐng)的空間是一段連續(xù)的內(nèi)存空間。不需要該內(nèi)存空間時(shí),應(yīng)該人為釋放它,否則會(huì)導(dǎo)致內(nèi)存資源的浪費(fèi)。

內(nèi)存中有一塊稱(chēng)為“堆”(heap)的存儲(chǔ)區(qū),程序可以根據(jù)需要隨時(shí)用stdlib.h提供的malloc()等函數(shù)在堆中申請(qǐng)一部分空間來(lái)存儲(chǔ)數(shù)據(jù),當(dāng)不需要時(shí)又可以隨時(shí)用free()函數(shù)釋放。這種根據(jù)需要隨時(shí)開(kāi)辟、隨時(shí)釋放的內(nèi)存分配方式,稱(chēng)為動(dòng)態(tài)內(nèi)存分配。

C語(yǔ)言中malloc()大體的實(shí)現(xiàn)是,從操作系統(tǒng)一次性地取得比較大的內(nèi)存,然后將這些內(nèi)存“零售”給應(yīng)用程序。

堆區(qū)動(dòng)態(tài)內(nèi)存分配全局區(qū)靜態(tài)區(qū)棧區(qū)auto型變量(內(nèi)存重復(fù)使用)
常量(只讀)


代碼區(qū)(只讀)


(內(nèi)存分配中的堆和棧與數(shù)據(jù)結(jié)構(gòu)的堆和棧有本質(zhì)的區(qū)別。)

C語(yǔ)言的變量有兩種屬性:數(shù)據(jù)類(lèi)型和存儲(chǔ)類(lèi)型。存儲(chǔ)類(lèi)型標(biāo)識(shí)符有:auto,extern,static,register。用來(lái)說(shuō)明變量在計(jì)算機(jī)中不同的存儲(chǔ)形態(tài),包括存儲(chǔ)位置、作用域和生存期。

變量存儲(chǔ)類(lèi)型作用域生存期
auto局部變量所定義函數(shù)內(nèi)部所定義函數(shù)運(yùn)行期間
全部變量所定義之處到本源文件結(jié)束程序運(yùn)行的整個(gè)過(guò)程
static局部變量所定義函數(shù)內(nèi)部程序運(yùn)行的整個(gè)過(guò)程
全部變量所定義之處到本源文件結(jié)束,限于本文件程序運(yùn)行的整個(gè)過(guò)程
register局部變量所定義函數(shù)內(nèi)部所定義函數(shù)運(yùn)行期間
extern全部變量所定義之處到本源文件結(jié)束程序運(yùn)行的整個(gè)過(guò)程

函數(shù)調(diào)用時(shí),主調(diào)函數(shù)的實(shí)參是準(zhǔn)備好的具體數(shù)值,形參是函數(shù)調(diào)用時(shí)才開(kāi)辟單元的變量。

在編寫(xiě)程序時(shí),要告訴計(jì)算機(jī)這些數(shù)據(jù)的存儲(chǔ)位置。變量的存儲(chǔ)類(lèi)型的功能之一就是確定該變量是存放在動(dòng)態(tài)數(shù)據(jù)區(qū)、靜態(tài)存放區(qū)還是寄存器中。

內(nèi)存區(qū)存儲(chǔ)的內(nèi)容

程序區(qū)程序代碼

靜態(tài)存儲(chǔ)區(qū)全局變量、靜態(tài)局部變量編譯階段初始化,且只賦值一次,對(duì)靜態(tài)局部變量多次調(diào)用時(shí),每次在前一次的結(jié)果上進(jìn)行。
動(dòng)態(tài)存儲(chǔ)區(qū)(棧區(qū))局部動(dòng)態(tài)變量、形參在進(jìn)入它們的函數(shù)或復(fù)合語(yǔ)句時(shí)才初始化,相當(dāng)于賦值語(yǔ)句。每調(diào)用一次,就重新賦值一次。
動(dòng)態(tài)分配區(qū)(棧區(qū))動(dòng)態(tài)數(shù)據(jù)程序運(yùn)行時(shí)與用戶(hù)交互完成。


(數(shù)據(jù)還可以存放在寄存器中)

數(shù)據(jù)存儲(chǔ)涉及的內(nèi)容:

要多少具體在哪里給誰(shuí)用何時(shí)給用多久
數(shù)據(jù)類(lèi)型數(shù)據(jù)地址作用域內(nèi)存分配生存期
字節(jié)數(shù)量變量名、指針作用的代碼范圍何時(shí)分配到何種內(nèi)存區(qū)域從單元開(kāi)辟到釋放

磁盤(pán)文件是指存儲(chǔ)在外部介質(zhì)(硬盤(pán)、光盤(pán)或U盤(pán))上的文件。 磁盤(pán)文件的輸入(外部存儲(chǔ)器上的磁盤(pán)文件→內(nèi)存)、輸出(內(nèi)存→外部存儲(chǔ)器上的磁盤(pán)文件)是外存與內(nèi)存的數(shù)據(jù)交互。

C++程序設(shè)計(jì)的存儲(chǔ)設(shè)計(jì)思想

C++程序設(shè)計(jì)的存儲(chǔ)設(shè)計(jì)思想

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多