08 2008 檔案
摘要: 一個由c/C++編譯的程序占用的內(nèi)存分為以下幾個部分
1、棧區(qū)(stack)— 由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
2、堆區(qū)(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時可能由OS回收 。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。
3、全局區(qū)(靜態(tài)區(qū))(static)—,全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域, 未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。 - 程序結(jié)束后有系統(tǒng)釋放
4、文字常量區(qū) —常量字符串就是放在這里的。 程序結(jié)束后由系統(tǒng)釋放
5、程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼。
閱讀全文
摘要: 在C++中,內(nèi)存分成5個區(qū),他們分別是堆、棧、自由存儲區(qū)、全局/靜態(tài)存儲區(qū)和常量存儲區(qū)。
閱讀全文
摘要: 到底什么是ANSI,什么是UNICODE呢?其實這是兩種不同的編碼方式標(biāo)準(zhǔn),ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。8bit的ANSI編碼只能表示256種字符,表示26個英文字母是綽綽有余的,但是表示漢字,韓國語,日語等有著成千上萬個字符的非西方字符肯定就不夠了,正是如此才引入了UNICODE標(biāo)準(zhǔn)。
在軟件開發(fā)中,特別是使用C語言的一些有關(guān)字符串處理的函數(shù),ANSI和UNICODE是區(qū)分是用的,那么ANSI類型的字符和UNICODE類型的字符如何定義,如何使用呢?ANSI和UNICODE又如何轉(zhuǎn)換呢?
閱讀全文
摘要: 隨著計算機(jī)技術(shù)的不斷發(fā)展與應(yīng)用,計算模式從集中式轉(zhuǎn)向了分布式,尤為典型的是C/S結(jié)構(gòu)(Client/Server的簡稱,客戶機(jī)/服務(wù)器模式)。兩層結(jié)構(gòu)C/S模式,在上個世紀(jì)八十年代及九十年代初得到了大量應(yīng)用,最直接的原因是可視化開發(fā)工具的推廣。之后,它開始向三層結(jié)構(gòu)發(fā)展。近年來,隨著網(wǎng)絡(luò)技術(shù)不斷發(fā)展,尤其是基于Web的信息發(fā)布和檢索技術(shù)、Java計算技術(shù)以及網(wǎng)絡(luò)分布式對象技術(shù)的飛速發(fā)展,導(dǎo)致了很多應(yīng)用系統(tǒng)的體系結(jié)構(gòu)從C/S結(jié)構(gòu)向更加靈活的多級分布結(jié)構(gòu)演變,使得軟件系統(tǒng)的網(wǎng)絡(luò)體系結(jié)構(gòu)跨入一個新階段,即B/S體系結(jié)構(gòu)(Browser/Server的簡稱,瀏覽器/服務(wù)器模式)?;赪eb的B/S方式其實也是一種客戶機(jī)/服務(wù)器方式,只不過它的客戶端是瀏覽器。為了區(qū)別于傳統(tǒng)的C/S模式,才特意將其稱為B/S模式。認(rèn)識到這些結(jié)構(gòu)的特征,對于系統(tǒng)的選型而言是很關(guān)鍵的
閱讀全文
摘要: 〔一〕=====[排版] ]=======.
〔二〕======[注釋]=======.
〔三〕=====[標(biāo)識符命名]=======.
〔四〕=====[可讀性]======.
〔五〕=====[變量、結(jié)構(gòu)]=====.
〔六〕=====[函數(shù)、過程]=====.
〔七〕=====[可測性]=====.
〔八〕=====[程序效率]=====.
〔九〕=====[質(zhì)量保證]=====.
〔十〕=====[代碼編輯、編譯、審查]=====.
〔十一〕=====[代碼測試、維護(hù)]=====.
〔十二〕=====[宏]=====.
閱讀全文
摘要: 進(jìn)程和線程都是操作系統(tǒng)的概念。進(jìn)程是應(yīng)用程序的執(zhí)行實例,每個進(jìn)程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進(jìn)程在運行過程中創(chuàng)建的資源隨著進(jìn)程的終止而被銷毀,所使用的系統(tǒng)資源在進(jìn)程終止時被釋放或關(guān)閉。
線程是進(jìn)程內(nèi)部的一個執(zhí)行單元。系統(tǒng)創(chuàng)建好進(jìn)程后,實際上就啟動執(zhí)行了該進(jìn)程的主執(zhí)行線程,主執(zhí)行線程以函數(shù)地址形式,比如說main或WinMain函數(shù),將程序的啟動點提供給Windows系統(tǒng)。主執(zhí)行線程終止了,進(jìn)程也就隨之終止。
每一個進(jìn)程至少有一個主執(zhí)行線程,它無需由用戶去主動創(chuàng)建,是由系統(tǒng)自動創(chuàng)建的。用戶根據(jù)需要在應(yīng)用程序中創(chuàng)建其它線程,多個線程并發(fā)地運行于同一個進(jìn)程中。一個進(jìn)程中的所有線程都在該進(jìn)程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以線程間的通訊非常方便,多線程技術(shù)的應(yīng)用也較為廣泛。
閱讀全文
摘要: 跟exe有個main或者WinMain入口函數(shù)一樣,DLL也有一個入口函數(shù),就是DllMain。以“DllMain”為關(guān)鍵字,來看看MSDN幫助文檔怎么介紹這個函數(shù)的。
The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(簡要翻譯:對于一個Dll模塊,DllMain函數(shù)是可選的。)這句話很重要,很多初學(xué)者可能都認(rèn)為一個動態(tài)鏈接庫肯定要有DllMain函數(shù)。其實不然,像很多僅僅包含資源信息的DLL是沒有DllMain函數(shù)的
閱讀全文