版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
全局,靜態(tài),new產(chǎn)生的變量都在堆中動(dòng)態(tài)分配的變量在堆中分配局部變量在棧里分配函數(shù)中聲明的變量在棧中用了new標(biāo)示符在堆中全局變量和static變量都在全局區(qū)程序?yàn)闂W兞糠峙鋭?dòng)態(tài)內(nèi)存,在程序結(jié)束時(shí)為棧變量分配的空間將自動(dòng)釋放;而為堆變量分配的空間則不會(huì)自動(dòng)釋放,若在程序中沒(méi)有沒(méi)有釋放堆變量,它將一直占用系統(tǒng)內(nèi)存。堆棧是一種執(zhí)行“后進(jìn)先出”算法的數(shù)據(jù)結(jié)構(gòu)。設(shè)想有一個(gè)直徑不大、一端開(kāi)口一端封閉的竹筒。有若干個(gè)寫有編號(hào)的小球,小球的直徑比竹筒的直徑略小。現(xiàn)在把不同編號(hào)的小球放到竹筒里面,可以發(fā)現(xiàn)一種規(guī)律:先放進(jìn)去的小球只能后拿出來(lái),反之,后放進(jìn)去的小球能夠先拿出來(lái)。所以“先進(jìn)后出”就是這種結(jié)構(gòu)的特點(diǎn)。堆棧就是這樣一種數(shù)據(jù)結(jié)構(gòu)。它是在內(nèi)存中開(kāi)辟一個(gè)存儲(chǔ)區(qū)域,數(shù)據(jù)一個(gè)一個(gè)順序地存入(也就是“壓入——push”)這個(gè)區(qū)域之中。有一個(gè)地址指針總指向最后一個(gè)壓入堆棧的數(shù)據(jù)所在的數(shù)據(jù)單元,存放這個(gè)地址指針的寄存器就叫做堆棧指示器。開(kāi)始放入數(shù)據(jù)的單元叫做“棧底”。數(shù)據(jù)一個(gè)一個(gè)地存入,這個(gè)過(guò)程叫做“壓?!薄T趬簵5倪^(guò)程中,每有一個(gè)數(shù)據(jù)壓入堆棧,就放在和前一個(gè)單元相連的后面一個(gè)單元中,堆棧指示器中的地址自動(dòng)加1。讀取這些數(shù)據(jù)時(shí),按照堆棧指示器中的地址讀取數(shù)據(jù),堆棧指示器中的地址數(shù)自動(dòng)減1。這個(gè)過(guò)程叫做“彈出pop”。如此就實(shí)現(xiàn)了后進(jìn)先出的原則。堆棧是計(jì)算機(jī)中最常用的一種數(shù)據(jù)結(jié)構(gòu),比如函數(shù)的調(diào)用在計(jì)算機(jī)中是用堆棧實(shí)現(xiàn)的。堆棧可以用數(shù)組存儲(chǔ),也可以用以后會(huì)介紹的鏈表存儲(chǔ)。下面是一個(gè)堆棧的結(jié)構(gòu)體定義,包括一個(gè)棧頂指針,一個(gè)數(shù)據(jù)項(xiàng)數(shù)組。棧頂指針最開(kāi)始指向-1,然后存入數(shù)據(jù)時(shí),棧頂指針加1,取出數(shù)據(jù)后,棧頂指針減1。#defineMAX_SIZE100typedefintDATA_TYPE;structstack(DATA_TYPEdata[MAX_SIZE];inttop;};在C++中,內(nèi)存分成5個(gè)區(qū),他們分別是堆、棧、自由存儲(chǔ)區(qū)、全局/靜態(tài)存儲(chǔ)區(qū)和常量存儲(chǔ)區(qū)。棧,就是那些由編譯器在需要的時(shí)候分配,在不需要的時(shí)候自動(dòng)清楚的變量的存儲(chǔ)區(qū)。里面的變量通常是局部變量、函數(shù)參數(shù)等。堆,就是那些由new分配的內(nèi)存塊,他們的釋放編譯器不去管,由我們的應(yīng)用程序去控制,一般一個(gè)new就要對(duì)應(yīng)一個(gè)delete。如果程序員沒(méi)有釋放掉,那么在程序結(jié)束后,操作系統(tǒng)會(huì)自動(dòng)回收。自由存儲(chǔ)區(qū),就是那些由malloc等分配的內(nèi)存塊,他和堆是十分相似的,不過(guò)它是用free來(lái)結(jié)束自己的生命的。全局/靜態(tài)存儲(chǔ)區(qū),全局變量和靜態(tài)變量被分配到同一塊內(nèi)存中,在以前的C語(yǔ)言中,全局變量又分為初始化的和未初始化的,在C++里面沒(méi)有這個(gè)區(qū)分了,他們共同占用同一塊內(nèi)存區(qū)。常量存儲(chǔ)區(qū),這是一塊比較特殊的存儲(chǔ)區(qū),他們里面存放的是常量,不允許修改(當(dāng)然,你要通過(guò)非正當(dāng)手段也可以修改,而且方法很多.inta;voidfunc(intarg)(staticintb;intc;void*p;p=(void*)malloc(100);}a在文件中聲明是全局變量b雖然在函數(shù)內(nèi)聲明,但是靜態(tài)的,所以也在全局?jǐn)?shù)據(jù)區(qū)c,p是函數(shù)內(nèi)聲明,是棧變量arg是參數(shù),是棧變量p指向的空間用malloc分配,是堆空間一、預(yù)備知識(shí)一程序的內(nèi)存分配一個(gè)由c/C++編譯的程序占用的內(nèi)存分為以下幾個(gè)部分1、棧區(qū)(stack)-由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。2、堆區(qū)(heap)—一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。3、全局區(qū)(靜態(tài)區(qū))(static)—,全局變量和靜態(tài)變量的存儲(chǔ)是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。-程序結(jié)束后有系統(tǒng)釋放4、文字常量區(qū)一常量字符串就是放在這里的。程序結(jié)束后由系統(tǒng)釋放5、程序代碼區(qū)一存放函數(shù)體的二進(jìn)制代碼。二、例子程序這是一個(gè)前輩寫的,非常詳細(xì)//main.cppinta=0;全局初始化區(qū)char*p1;全局未初始化區(qū)main()(intb;棧chars[]="abc";棧char*p2;棧char*p3="123456";123456\0在常量區(qū),p3在棧上。staticintc=0;全局(靜態(tài))初始化區(qū)p1=(char*)malloc(10);p2=(char*)malloc(20);分配得來(lái)得10和20字節(jié)的區(qū)域就在堆區(qū)。strcpy(p1,"123456");123456\0放在常量區(qū),編譯器可能會(huì)將它與p3所指向的"123456"優(yōu)化成一個(gè)地方。}二、堆和棧的理論知識(shí)2.1申請(qǐng)方式stack:由系統(tǒng)自動(dòng)分配。例如,聲明在函數(shù)中一個(gè)局部變量intb;系統(tǒng)自動(dòng)在棧中為b開(kāi)辟空間heap:需要程序員自己申請(qǐng),并指明大小,在c中malloc函數(shù)如p1=(char*)malloc(10);在C++中用new運(yùn)算符如p2=(char*)malloc(10);但是注意p1、p2本身是在棧中的。2.2申請(qǐng)后系統(tǒng)的響應(yīng)棧:只要棧的剩余空間大于所申請(qǐng)空間,系統(tǒng)將為程序提供內(nèi)存,否則將報(bào)異常提示棧溢出。堆:首先應(yīng)該知道操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請(qǐng)時(shí),會(huì)遍歷該鏈表,尋找第一個(gè)空間大于所申請(qǐng)空間的堆結(jié)點(diǎn),然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈表中刪除,并將該結(jié)點(diǎn)的空間分配給程序,另外,對(duì)于大多數(shù)系統(tǒng),會(huì)在這塊內(nèi)存空間中的首地址處記錄本次分配的大小,這樣,代碼中的delete語(yǔ)句才能正確的釋放本內(nèi)存空間。另外,由于找到的堆結(jié)點(diǎn)的大小不一定正好等于申請(qǐng)的大小,系統(tǒng)會(huì)自動(dòng)的將多余的那部分重新放入空閑鏈表中。2.3申請(qǐng)大小的限制棧:在Windows下,棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存的區(qū)域。這句話的意思是棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的,在WINDOWS下,棧的大小是2M(也有的說(shuō)是1M,總之是一個(gè)編譯時(shí)就確定的常數(shù)),如果申請(qǐng)的空間超過(guò)棧的剩余空間時(shí),將提示overflow。因此,能從棧獲得的空間較小。堆:堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。這是由于系統(tǒng)是用鏈表來(lái)存儲(chǔ)的空閑內(nèi)存地址的,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址。堆的大小受限于計(jì)算機(jī)系統(tǒng)中有效的虛擬內(nèi)存。由此可見(jiàn),堆獲得的空間比較靈活,也比較大。2.4申請(qǐng)效率的比較:棧由系統(tǒng)自動(dòng)分配,速度較快。但程序員是無(wú)法控制的。堆是由new分配的內(nèi)存,一般速度比較慢,而且容易產(chǎn)生內(nèi)存碎片,不過(guò)用起來(lái)最方便.另外,在WINDOWS下,最好的方式是用VirtualAlloc分配內(nèi)存,他不是在堆,也不是在棧是直接在進(jìn)程的地址空間中保留一快內(nèi)存,雖然用起來(lái)最不方便。但是速度快,也最靈活2.5堆和棧中的存儲(chǔ)內(nèi)容棧:在函數(shù)調(diào)用時(shí),第一個(gè)進(jìn)棧的是主函數(shù)中后的下一條指令(函數(shù)調(diào)用語(yǔ)句的下一條可執(zhí)行語(yǔ)句)的地址,然后是函數(shù)的各個(gè)參數(shù),在大多數(shù)的C編譯器中,參數(shù)是由右往左入棧的,然后是函數(shù)中的局部變量。注意靜態(tài)變量是不入棧的。當(dāng)本次函數(shù)調(diào)用結(jié)束后,局部變量先出棧,然后是參數(shù),最后棧頂指針指向最開(kāi)始存的地址,也就是主函數(shù)中的下一條指令,程序由該點(diǎn)繼續(xù)運(yùn)行。堆:一般是在堆的頭部用一個(gè)字節(jié)存放堆的大小。堆中的具體內(nèi)容有程序員安排。2.6存取效率的比較chars1[]="aaaaaaaaaaaaaaa";char*s2="bbbbbbbbbbbbbbbbb";aaaaaaaaaaa是在運(yùn)行時(shí)刻賦值的;而bbbbbbbbbbb是在編譯時(shí)就確定的;但是,在以后的存取中,在棧上的數(shù)組比指針?biāo)赶虻淖址ɡ缍眩┛?。比如?includevoidmain()(chara=1;charc[]="1234567890";char*p="1234567890";a=c[1];a=p[1];return;}對(duì)應(yīng)的匯編代碼10:a=c[1];004010678A4DF1movcl,byteptr[ebp-0Fh]0040106A884DFCmovbyteptr[ebp-4],cl11:a=p[1];0040106D8B55ECmovedx,dwordptr[ebp-14h]004010708A4201moval,byteptr[edx+1]004010738845FCmovbyteptr[ebp-4],al第一種在讀取時(shí)直接就把字符串中的元素讀到寄存器cl中,而第二種則要先把指針值讀到edx中,在根據(jù)edx讀取字符,顯然慢了。2.7小結(jié):堆和棧的區(qū)別可以用如下的比喻來(lái)看出:使用棧就象我們?nèi)ワ堭^里吃飯,只管點(diǎn)菜(發(fā)出申請(qǐng))、付錢、和吃(使用),吃飽了就走,不必理會(huì)切菜、洗菜等準(zhǔn)備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。使用堆就象是自己動(dòng)手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,而且自由度大。堆和棧的區(qū)別主要分:操作系統(tǒng)方面的堆和棧,如上面說(shuō)的那些,不多說(shuō)了。還有就是數(shù)據(jù)結(jié)構(gòu)方面的堆和棧,這些都是不同的概念。這里的堆實(shí)際上指的就是(滿足堆性質(zhì)的)優(yōu)先隊(duì)列的一種數(shù)據(jù)結(jié)構(gòu),第1個(gè)元素有最高的優(yōu)先權(quán);棧實(shí)際上就是滿足先進(jìn)后出的性質(zhì)的數(shù)學(xué)或數(shù)據(jù)結(jié)構(gòu)。雖然堆棧,堆棧的說(shuō)法是連起來(lái)叫,但是他們還是有很大區(qū)別的,連著叫只是由于歷史的原因。java的棧和堆的區(qū)別棧(stack)與堆(heap)都是Java用來(lái)在Ram中存放數(shù)據(jù)的地方棧(stack)與堆(heap)都是Java用來(lái)在Ram中存放數(shù)據(jù)的地方。與C++不同,Java自動(dòng)管理?xiàng):投?,程序員不能直接地設(shè)置棧或堆。棧的優(yōu)勢(shì)是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。但缺點(diǎn)是,存在棧中的數(shù)據(jù)大小與生存期必須是確定的,缺乏靈活性。另外,棧數(shù)據(jù)可以共享,詳見(jiàn)第3點(diǎn)。堆的優(yōu)勢(shì)是可以動(dòng)態(tài)地分配內(nèi)存大小,生存期也不必事先告訴編譯器,Java的垃圾收集器會(huì)自動(dòng)收走這些不再使用的數(shù)據(jù)。但缺點(diǎn)是,由于要在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,存取速度較慢。Java中的數(shù)據(jù)類型有兩種。一種是基本類型(primitivetypes),共有8種,即int,short,long,byte,float,double,boolean,char(注意,并沒(méi)有string的基本類型)。這種類型的定義是通過(guò)諸如inta=3;longb=255L的形式來(lái)定義的,稱為自動(dòng)變量。值得注意的是,自動(dòng)變量存的是字面值,不是類的實(shí)例,即不是類的引用,這里并沒(méi)有類的存在。如inta=3;這里的a是一個(gè)指向int類型的引用,指向3這個(gè)字面值。這些字面值的數(shù)據(jù),由于大小可知,生存期可知(這些字面值固定定義在某個(gè)程序塊里面,程序塊退出后,字段值就消失了),出于追求速度的原因,就存在于棧中。另外,棧有一個(gè)很重要的特殊性,就是存在棧中的數(shù)據(jù)可以共享。假設(shè)我們同時(shí)定義:inta=3;intb=3;編譯器先處理inta=3;首先它會(huì)在棧中創(chuàng)建一個(gè)變量為a的引用,然后查找有沒(méi)有字面值為3的地址,沒(méi)找到,就開(kāi)辟一個(gè)存放3這個(gè)字面值的地址,然后將a指向3的地址。接著處理intb=3;在創(chuàng)建完b的引用變量后,由于在棧中已經(jīng)有3這個(gè)字面值,便將b直接指向3的地址。這樣,就出現(xiàn)了a與b同時(shí)均指向3的情況。特別注意的是,這種字面值的引用與類對(duì)象的引用不同。假定兩個(gè)類對(duì)象的引用同時(shí)指向一個(gè)對(duì)象,如果一個(gè)對(duì)象引用變量修改了這個(gè)對(duì)象的內(nèi)部狀態(tài),那么另一個(gè)對(duì)象引用變量也即刻反映出這個(gè)變化。相反,通過(guò)字面值的引用來(lái)修改其值,不會(huì)導(dǎo)致另一個(gè)指向此字面值的引用的值也跟著改變的情況。如上例,我們定義完a與b的值后,再令a=4;那么,b不會(huì)等于4,還是等于3。在編譯器內(nèi)部,遇到a=4;時(shí),它就會(huì)重新搜索棧中是否有4的字面值,如果沒(méi)有,重新開(kāi)辟地址存放4的值;如果已經(jīng)有了,則直接將a指向這個(gè)地址。因此a值的改變不會(huì)影響到b的值。另一種是包裝類數(shù)據(jù),如Integer,String,Double等將相應(yīng)的基本數(shù)據(jù)類型包裝起來(lái)的類。這些類數(shù)據(jù)全部存在于堆中,Java用new()語(yǔ)句來(lái)顯示地告訴編譯器,在運(yùn)行時(shí)才根據(jù)需要?jiǎng)討B(tài)創(chuàng)建,因此比較靈活,但缺點(diǎn)是要占用更多的時(shí)間。String是一個(gè)特殊的包裝類數(shù)據(jù)。即可以用Stringstr=newString(\"abc\");的形式來(lái)創(chuàng)建,也可以用Stringstr=\"abc\";的形式來(lái)創(chuàng)建(作為對(duì)比,在JDK5.0之前,你從未見(jiàn)過(guò)Integeri=3;的表達(dá)式,因?yàn)轭惻c字面值是不能通用的,除了String。而在JDK5.0中,這種表達(dá)式是可以的!因?yàn)榫幾g器在后臺(tái)進(jìn)行Integeri=newInteger(3)的轉(zhuǎn)換)。前者是規(guī)范的類的創(chuàng)建過(guò)程,即在Java中,一切都是對(duì)象,而對(duì)象是類的實(shí)例,全部通過(guò)new()的形式來(lái)創(chuàng)建。Java中的有些類,如DateFormat類,可以通過(guò)該類的getInstance()方法來(lái)返回一個(gè)新創(chuàng)建的類,似乎違反了此原則。其實(shí)不然。該類運(yùn)用了單例模式來(lái)返回類的實(shí)例,只不過(guò)這個(gè)實(shí)例是在該類內(nèi)部通過(guò)new()來(lái)創(chuàng)建的,而getInstance()向外部隱藏了此細(xì)節(jié)。那為什么在Stringstr=\〃abc\〃;中,并沒(méi)有通過(guò)new()來(lái)創(chuàng)建實(shí)例,是不是違反了上述原則?其實(shí)沒(méi)有。關(guān)于Stringstr=\"abc\"的內(nèi)部工作。Java內(nèi)部將此語(yǔ)句轉(zhuǎn)化為以下幾個(gè)步驟:先定義一個(gè)名為str的對(duì)String類的對(duì)象引用變量:Stringstr;在棧中查找有沒(méi)有存放值為'〃abc\〃的地址,如果沒(méi)有,則開(kāi)辟一個(gè)存放字面值為'〃abc\〃的地址,接著創(chuàng)建一個(gè)新的String類的對(duì)象o,并將o的字符串值指向這個(gè)地址,而且在棧中這個(gè)地址旁邊記下這個(gè)引用的對(duì)象o。如果已經(jīng)有了值為'〃abc\〃的地址,則查找對(duì)象o,并返回o的地址。⑶將str指向?qū)ο髈的地址。值得注意的是,一般String類中字符串值都是直接存值的。但像Stringstr=\〃abc\〃;這種場(chǎng)合下,其字符串值卻是保存了一個(gè)指向存在棧中數(shù)據(jù)的引用!為了更好地說(shuō)明這個(gè)問(wèn)題,我們可以通過(guò)以下的幾個(gè)代碼進(jìn)行驗(yàn)證。Stringstr1=\"abc\";Stringstr2=\"abc\";System.out.println(str1==str2);//true注意,我們這里并不用str1.equals(str2);的方式,因?yàn)檫@將比較兩個(gè)字符串的值是否相等。二二號(hào),根據(jù)JDK的說(shuō)明,只有在兩個(gè)引用都指向了同一個(gè)對(duì)象時(shí)才返回真值。而我們?cè)谶@里要看的是,str1與str2是否都指向了同一個(gè)對(duì)象。結(jié)果說(shuō)明,JVM創(chuàng)建了兩個(gè)引用str1和str2,但只創(chuàng)建了一個(gè)對(duì)象,而且兩個(gè)引用都指向了這個(gè)對(duì)象。我們?cè)賮?lái)更進(jìn)一步,將以上代碼改成:Stringstrl=\"abc\";Stringstr2=\"abc\";strl=\"bcd\";System.out.println(str1+\",\"+str2);//bcd,abcSystem.out.println(str1==str2);//false這就是說(shuō),賦值的變化導(dǎo)致了類對(duì)象引用的變化,str1指向了另外一個(gè)新對(duì)象!而str2仍舊指向原來(lái)的對(duì)象。上例中,當(dāng)我們將str1的值改為'〃bcd\〃時(shí),JVM發(fā)現(xiàn)在棧中沒(méi)有存放該值的地址,便開(kāi)辟了這個(gè)地址,并創(chuàng)建了一個(gè)新的對(duì)象,其字符串的值指向這個(gè)地址。事實(shí)上,String類被設(shè)計(jì)成為不可改變(immutable)的類。如果你要改變其值,可以,但JVM在運(yùn)行時(shí)根據(jù)新值悄悄創(chuàng)建了一個(gè)新對(duì)象,然后將這個(gè)對(duì)象的地址返回給原來(lái)類的引用。這個(gè)創(chuàng)建過(guò)程雖說(shuō)是完全自動(dòng)進(jìn)行的,但它畢竟占用了更多的時(shí)間。在對(duì)時(shí)間要求比較敏感的環(huán)境中,會(huì)帶有一定的不良影響。再修改原來(lái)代碼:Stringstr1=\"abc\";Stringstr2=\"abc\";str1=\"bcd\";Stringstr3=str1;System.out.println(str3);//bcdStringstr4=\"bcd\";System.out.println(str1==str4);//truestr3這個(gè)對(duì)象的引用直接指向str1所指向的對(duì)象(注意,str3并沒(méi)有創(chuàng)建新對(duì)象)。當(dāng)str1改完其值后,再創(chuàng)建一個(gè)String的引用str4,并指向因str1修改值而創(chuàng)建的新的對(duì)象??梢园l(fā)現(xiàn),這回str4也沒(méi)有創(chuàng)建新的對(duì)象,從而再次實(shí)現(xiàn)棧中數(shù)據(jù)的共享。我們?cè)俳又匆韵碌拇a。Stringstr1=newString(\"abc\");Stringstr2=\"abc\";System.out.println(str1==str2);//false創(chuàng)建了兩個(gè)引用。創(chuàng)建了兩個(gè)對(duì)象。兩個(gè)引用分別指向不同的兩個(gè)對(duì)象。Stringstr1=\"abc\";Stringstr2=newString(\"abc\");System.out.printl
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025醫(yī)療信息服務(wù)合作合同
- 2025年度鋼構(gòu)加工企業(yè)信息化建設(shè)合作協(xié)議
- 2025年度物流配送中心土地租賃協(xié)議4篇
- 2025年度個(gè)人分紅權(quán)轉(zhuǎn)讓協(xié)議書2篇
- 遵義醫(yī)科大學(xué)醫(yī)學(xué)與科技學(xué)院《室內(nèi)綠化設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 遵義師范學(xué)院《成本會(huì)計(jì)理論與實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度個(gè)人與個(gè)人間健身器材租賃協(xié)議2篇
- 二零二五版?zhèn)€人二手房交易擔(dān)保協(xié)議3篇
- 2025年度金融科技產(chǎn)品開(kāi)發(fā)與推廣合作協(xié)議3篇
- 二零二五年度品牌門面獨(dú)家代理權(quán)轉(zhuǎn)讓協(xié)議
- 售后工程師述職報(bào)告
- GB 19053-2024殯儀場(chǎng)所致病菌安全限值
- 綠化養(yǎng)護(hù)難點(diǎn)要點(diǎn)分析及技術(shù)措施
- 2024年河北省高考?xì)v史試卷(含答案解析)
- 車位款抵扣工程款合同
- 小學(xué)六年級(jí)數(shù)學(xué)奧數(shù)題100題附答案(完整版)
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試參考試題庫(kù)(含答案)
- 英漢互譯單詞練習(xí)打印紙
- 2023湖北武漢華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員24人筆試參考題庫(kù)(共500題)答案詳解版
- 一氯二氟甲烷安全技術(shù)說(shuō)明書MSDS
- 母嬰護(hù)理員題庫(kù)
評(píng)論
0/150
提交評(píng)論