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