Time of Update: 2017-02-27
7.9 記憶體耗盡怎麼辦?如果在申請動態記憶體時找不到足夠大的記憶體塊,malloc和new將返回NULL指標,宣告記憶體申請失敗。通常有三種方式處理“記憶體耗盡”問題。(1)判斷指標是否為NULL,如果是則馬上用return語句終止本函數。例如:void Func(void){A *a = new A;if(a == NULL){return;}…}(2)判斷指標是否為NULL,如果是則馬上用exit(1)終止整個程式的運行。例如:void
Time of Update: 2017-02-27
7.5 free和delete把指標怎麼啦?7.7 杜絕“野指標”“野指標”不是NULL指標,是指向“垃圾”記憶體的指標。人們一般不會錯用NULL指標,因為用if語句很容易判斷。但是“野指標”是很危險的,if語句對它不起作用。
Time of Update: 2017-02-27
7.3.3 計算記憶體容量用運算子sizeof可以計算出數組的容量(位元組數)。樣本7-3-3(a)中,sizeof(a)的值是12(注意別忘了’\0’)。指標p指向a,但是sizeof(p)的值卻是4。這是因為sizeof(p)得到的是一個指標變數的位元組數,相當於sizeof(char*),而不是p所指的記憶體容量。C++/C語言沒有辦法知道指標所指的記憶體容量,除非在申請記憶體時記住它。注意當數組作為函數的參數進行傳遞時,該數組自動退化為同類型的指標。樣本7-3-3
Time of Update: 2017-02-27
7.3.1 修改內容樣本7-3-1中,字元數組a的容量是6個字元,其內容為hello\0。a的內容可以改變,如a[0]= ‘X’。指標p指向常量字串“world”(位於靜態儲存區,內容為world\0),常量字串的內容是不可以被修改的。從文法上看,編譯器並不覺得語句p[0]= ‘X’有什麼不妥,但是該語句企圖修改常量字串的內容而導致運行錯誤。char a[] = “hello”;a[0] =
Time of Update: 2017-02-27
歡迎進入記憶體這片雷區。偉大的Bill Gates 曾經失言: 640K ought to be enough for everybody — Bill Gates 1981程式員們經常編寫記憶體管理程式,往往提心弔膽。如果不想觸雷,唯一的解決辦法就是發現所有潛伏的地雷並且排除它們,躲是躲不了的。本章的內容比一般教科書的要深入得多,讀者需細心閱讀,做到真正地通曉記憶體管理。7.1記憶體配置方式記憶體配置方式有三種:(1)
Time of Update: 2017-02-27
#region 讀取Excel中的資料 02./// <summary> 03./// 讀取Excel中的資料 04./// </summary> 05./// <param name="excelFile">Excel檔案名稱及路徑,EG:C:\Users\JK\Desktop\匯入測試.xls</param> 06.///
Time of Update: 2017-02-27
要想編程使Windows關機、重啟或者登出,可以使用ExWindowsEx這個API函數,該函數只有兩個參數,第一個表示關機動作的標誌,也就是你要讓該函數關機呢,還是重啟,還是登出等。可以使用EWX_SHUTDOWN、EWX_REBOOT、EWX_LOGOFF等標誌常量,分別表示關機、重啟、登出。另外如果加上EWX_FORCE這個標誌常量的話,該表明強制執行該操作。Windows在執行以上操作的時候會首先給每個正在運行中的程式發送一個WM_QUERYENDSESSION訊息,告訴它們現在我要退出
Time of Update: 2017-02-27
Microsoft Visual C++是一種可視化程式設計語言,因功能強大而受到廣大程式設計人 員的青睞。但是,由於VC++的應用程式架構結構非常複雜,使得許多初學者望而卻步。 本文通過對設定視圖背景顏色和改變對話方塊標題的幾種實現方法的分析研究,揭示了VC+ +程式碼執行時的一些本質特徵和有關的程式設計技巧,對理解MFC庫的結構和Windows 作業系統的內部工作方式提供了一定的協助。設定視圖背景顏色對於VC+
Time of Update: 2017-02-27
Explanation不能有 CV 限定符,在 C++ 中 CV 限定符指const和volatile。非成員函數在 C++ 中, 普通函數(非類的成員函數)不能有 CV 限定,即const和volatile限定。即非類的成員行數,用const進行修飾:int test() const //這是不對的,普通函數(非成員函數不能有CV約束) { //實現 }靜態函數在 C++ 中,靜態成員函數(static成員函數)不能有 CV
Time of Update: 2017-02-27
1 Reactor 架構概述POCO 中的 Reactor 架構是基於 Reactor 設計模式進行設計的。其中由 Handler 將某 Socket 產生的事件,發送到指定的對象的方法上,作為回調。2 光說不練假把式PoechantReactorServer 類,基本與 PoechantTCPServer:class PoechantReactorServer: public ServerApplication { public: PoechantServer() {} /
Time of Update: 2017-02-27
1 TCPServer 架構概述POCO 庫提供TCPServer架構,用以搭建自訂的 TCP
Time of Update: 2017-02-27
現在介紹一下C++實現CD抓軌轉WAV,CD抓軌的方法有好幾種,現在介紹其中一種。我們 可以通過API函數CreateFile獲得裝置控制代碼,再用API函數DeviceIoControl來實現對裝置 的訪問擷取資訊。再此還會用到WAVE檔案結構WAVEFORMATEX,再把讀到的資訊寫到檔案裡 產生WAVE格式的檔案。我們要用到的標頭檔有: ntddcdrm.h(NTDDK開發包) winioctl.h
Time of Update: 2017-02-27
1 Poco::Net::IPAddress地址最大長度,IPv4 是 in_addr 的長度, IPv6 是 in6_addr 的長度enum { MAX_ADDRESS_LENGTH = #if defined(POCO_HAVE_IPv6) sizeof(struct in6_addr) #else sizeof(struct in_addr) #endif /// Maximum length in
Time of Update: 2017-02-27
1 SelectModeenum SelectMode /// The mode argument to poll() and select(). { SELECT_READ = 1, SELECT_WRITE = 2, SELECT_ERROR = 4 };2 SocketListtypedef std::vector<Socket> SocketList;3 建構函式未初始化的 socket:Socket
Time of Update: 2017-02-27
基本類型在Poco/Types.h標頭檔中。以下以 GNU C/C++ 和 CLang 為例。不 過要強調的是,POCO 有極好的跨平台性,你能想到的平台,幾乎都可以運行 POCO。1 有符號整型typedef signed char Int8;typedef signed short Int16;typedef signed int
Time of Update: 2017-02-27
由於本文是面對C語言基礎的(因為我就是從C學起來的),而MFC是利用C++類技術構建起來的。因此有必要在此為只瞭解C的朋友們,普及一下C++語言中類的概念。熟悉C++的朋友可以跳過本部分。從總體來說C++是向下相容C的,你可以很不費力氣地將用C編好了的程式拿到C++環境下編譯執行。其C++只不過是在C的基礎上添加物件導向技術(OOP),也就是類的概念,且值得一提的是C與C++都是由美國的貝爾實驗室(在之前我只知道發明過電話)發明的。一、什麼是類?按一些書本上的定義來說“就是一種複雜的
Time of Update: 2017-02-27
有很多是可以用調試來看到問題所在.只是初學者不知道有這些東東,即使知道也不是如何去用.我曾經也是這樣.從第一本入門書 BUG 一直困擾自己, 常常用ShowMessage("xxxx");來觀察程式運行現象.因為本人只學過TC 在TC中代碼寫的不很長,程式流程自己很清楚,也就沒去使用TC的調試器,好象它沒有整合的調試器.
Time of Update: 2017-02-27
#include<iostream.h>#include<afx.h>void main(){ char SourceName[81]; char DestinName[81]; cout<<"n 請輸入源檔案名稱:"; cin>>SourceName; cout<<"n 請輸入目標檔案名:"; cin>>DestinName; try { CFile
Time of Update: 2017-02-27
首先澄清一下,這個誤區僅對 C++ 成立,這裡不過是沿用“C/C++ 誤區”這個銜頭罷了。我們都知道,使用 malloc/calloc 等分配記憶體的函數時,一定要檢查其傳回值是否為“null 指標”(亦即檢查分配記憶體的操作是否成功),這是良好的編程習慣,也是編寫可靠程式所必需的。但是,如果你簡單地把這一招應用到 new 上,那可就不一定正確了。我經常看到類似這樣的代碼:int* p = new int[SIZE];if ( p == 0 ) /
Time of Update: 2017-02-27
全域層VB支援Module,是一種全部成員都是靜態特殊類型C#支援static class,和VB的Module類似;VB的Imports語句可以把類的靜態成員匯入,而C#的using語句沒有這個功能Imports System.MathVB可以選擇變數是否必須聲明,以及類型是否必須指定(通過Option語句)C#則預設是VB最嚴格的狀態C#可以使用extern