Time of Update: 2018-12-05
原文地址:http://blog.csdn.net/tiger119/archive/2005/12/07/546303.aspx轉載自 “石頭記”的部落格空間 前段時間,在查控制項的記憶體泄露時,最終找出一個錯誤:在使用XMLDom(COM)時,由於重複使用某介面指標前未釋放Dispatch指標(Release),而導致記憶體泄露,而此類錯誤(如同BSTR類型的泄漏),VC的調試器和Bondcheck均無能為力。解決辦法,似乎只有細心一途。
Time of Update: 2018-12-05
良好的代碼風格是編寫高效能程式的技術,下面是本人在做程式效能提高工作中總結的幾點小知識,希望與大家一起分享:在檔案或函數的頭部定義變數,雖然C++可以隨意定義變數,但頭部定義變數有兩點好處:首先便於閱讀,第二就是可以根據變數的類型來調整順序,從而方便CPU的處理考慮位元組對齊,實際上面的第二點也就是這個問題。有個地方需要注意位元組對齊:一是定義結構或類成員的時候,二是在傳遞參數的時候,三就是臨時變數了。實際上在函數傳遞參數的時候,即使你傳遞的是一個位元組,在CPU處理起來也可能作為4個位元組來處
Time of Update: 2018-12-05
#include <cstdio>class A{public: virtual void a(void) { printf("A:a(%p)\n", this); }private: virtual void b(void) { printf("A:b(%p)\n", this); }};class B : public A{public: virtual void c(void) {
Time of Update: 2018-12-05
今天在調試一段程式,輸出結果總是錯誤,不知道什麼原因,代碼如下:#include <sstream>#include <iostream>#include <netinet/in.h>#include <arpa/inet.h>using namespace std;void print_address(struct in_addr addr1, struct in_addr addr2){ostringstream oss;oss
Time of Update: 2018-12-05
===========================Linux 核心使用的 GNU C 擴充===========================GNC CC 是一個功能非常強大的跨平台 C 編譯器,它對 C 語言提供了很多擴充,這些擴充對最佳化、目標代碼布局、更安全的檢查等方面提供了很強的支援。本文把支援 GNU 擴充的 C 語言稱為 GNU C。Linux 核心代碼使用了大量的 GNU C 擴充,以至於能夠編譯 Linux 核心的唯一編譯器是 GNU CC,以前甚至出現過編譯 Linux
Time of Update: 2018-12-05
AVLTree即(Adelson-Velskii-Landis
Time of Update: 2018-12-05
volatile提醒編譯器它後面所定義的變數隨時都有可能改變,因此編譯後的程式每次需要儲存或讀取這個變數的時候,都會直接從變數地址中讀取資料。如果沒有volatile關鍵字,則編譯器可能最佳化讀取和儲存,可能暫時使用寄存器中的值,如果這個變數由別的程式更新了的話,將出現不一致的現象。下面舉例說明。在DSP開發中,經常需要等待某個事件的觸發,所以經常會寫出這樣的程式:short flag;void test(){do1();while(flag==0);do2();}
Time of Update: 2018-12-05
繪製方法參考的 http://blog.csdn.net/zgke/archive/2008/12/11/3496721.aspx C#.NET下繪製EAN13 有興趣的同學還可以參考http://blog.csdn.net/forrest23/archive/2009/08/21/4470858.aspx VB.NET繪製EAN13 DEMOCClientDC dc(this);EAN13Builder bld(_T("6926032345039"));bld.Draw(&dc,
Time of Update: 2018-12-05
虛函數可能會在執行前調整this指標的位置,例如多繼承的情況下。基類指標調用子類虛函數,必須調整指標才能訪問到正確的成員位置。沒有任何資料成員及虛函數的類對象,佔用空間為1位元組。NRV(named return value)最佳化可以使程式更少地調用構造與解構函式,減少複製運算。例如對於C1 func(){ C1 temp; return temp;}C1 t = func();與void func(C1&
Time of Update: 2018-12-05
有如下的類:class base{public:base(char* pStr){m_pStr = pStr;cout << pStr << " Constructor!" << endl;}~base(){cout << m_pStr << " Destructor!" << endl;}void fund(char* pStr){if (pStr != NULL){static base b(pStr);}}void
Time of Update: 2018-12-05
轉自 http://blog.csdn.net/acmee/article/details/6613060我們知道,使用ls命令列出檔案清單時,不同的檔案類型會用不同的顏色顯示。那麼如何?這樣帶顏色的文本輸出呢?答案並不複雜,不管是用shell還是C語言。一、shell下的實現方法 先來講在shell下,如何?。用echo命令就可以實現,參看以下例子: echo -e "\033[32mHello, world!"
Time of Update: 2018-12-05
預設建構函式就是不提供顯示的(包含沒有參數和預設參數)初始化值,被用來建立對象的建構函式。用於下面這種聲明的建構函式Stock stock1;註: 若且唯若沒有定義任何建構函式的時候,編譯器才會提供預設建構函式, 當我們定義了建構函式,那麼我們就必須提供預設建構函式,如Stock(const char *co, int n, double pr);
Time of Update: 2018-12-05
作為一個經驗豐富的C/C++程式員, 肯定親手寫過各種功能的代碼, 比如封裝過資料庫訪問的類, 封裝過網路通訊的類,封裝過日誌操作的類, 封裝過檔案訪問的類, 封裝過UI介面庫等, 也在實際的項目中應用過, 但是回過頭仔細想想,其實以前自己寫過的這些代碼,只能是在特定的項目或者特定的環境中使用, 對於自己來說, 在不同的項目中應用, 只需要複製代碼, 改改也就可以了, 因為自己寫的代碼自己很熟悉。問題是, 你封裝的這些庫, 在給別人使用的時候, 別人用起來是否很方便, 跨平台方面是不是也很通用,
Time of Update: 2018-12-05
*************************************************************************************轉自:http://hi.baidu.com/to9m/blog/item/cdc68495dd2c1a0d7af4807a.html在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子: 1、插入器(<<)
Time of Update: 2018-12-05
首先,看如下8個題,如果您能不看任何資料的情況下做對。那麼恭喜您,這塊應該基本沒問題了。因為再複雜的組合都是從這上面8種裡變出來的。1,定義一個整形數2,定義一個指向整形數的指標3,定義一個指向指標的指標,它指向的指標,是一個指向整形數的指標4,定義一個具有10個整形數的數組5,定義一個具有10個指標的數組,這些指標都是指向整形數的6,定義一個指向有10個整形數 數組的指標7,定義一個指向函數的指標,該函數有一個整形參數
Time of Update: 2018-12-05
//加了下面兩個標頭檔,是為了在Win32工程中使用MFC的特性!#include <afx.h>#include <afxwin.h>#include "stdio.h"#include "conio.h"////加了下面兩句,是為了能夠用string(basic_string類型)#include <string>using namespace std;int main(int argc, char* argv[]){// string
Time of Update: 2018-12-05
C++ String 類常用函數 string類的構造函數:string(const char *s); //用c字串s初始化string(int n,char c); //用n個字元c初始化此外,string類還支援預設建構函式和複製建構函式,如string s1;string s2="hello";都是正確的寫法。當構造的string太長而無法表達時會拋出length_error異常string類的字元操作:const char &operator[](int
Time of Update: 2018-12-05
C++代理類的使用所謂代理類,即surrogate.為什麼要使用它呢,簡單的舉個例子. 1 class Vehicle 2 { 3 public: 4 Vehicle(){} 5 virtual string getName()= 0; 6 }: 7 8 class Car : public Vehicle 9 {10 public:11 Car(){}12 virtual string getName(){}13 };14 15 class Bike :
Time of Update: 2018-12-05
口號:一次編碼,到處編譯! :-) 一次編碼,在 vc7.1 , vi 甚至ulteredit 上完成編碼。 到處編譯,將寫好的代碼 copy 到其它作業系統,也能夠編譯運行,而不用去修改哪怕一行代碼。 聽起來是不是象 SUN 的口氣,呵呵。 其實 c++ 的移植性個人認為是超過 java 的,java之所以名聲在外的原因 B.S 說得很明了:廠商利益。 呵,廢話不多說,進入主題。 要建立一個c++跨平台的應用,亦難也易。
Time of Update: 2018-12-05
Static對於特定類類型的全體對象來講,訪問一個全域對象有時是很必要的。然而,對一個類來說,全域對象或許會破壞封裝。取而代之的方法是,類定義靜態成員(static)來代替一個可普遍訪問的全域對象。static成員包括static資料成員和static成員函數。通常,非static資料成員存在於類類型的每個對象中,而static資料成員獨立於該類的所有對象而存在,每個static資料成員與類關聯,而不與類的對象關聯。使用static 成員代替全域對象的優點:static