原创 結構體字節對齊

在用sizeof運算符求算某結構體所佔空間時,並不是簡單地將結構體中所有元素各自佔的空間相加,這裏涉及到內存字節對齊的問題。從理論上講,對於任何變量的訪問都可以從任何地址開始訪問,但是事實上不是如此,實際上訪問特定類型的變量只能在

原创 私有繼承

私有繼承的 第一個規則:和公有繼承相反,如果兩個類之間的繼承關係爲私有,編譯器一般不會將派生類對象轉換成基類對象。 第二個規則: 從私有基類繼承而來的成員都成爲了派生類的私有成員,即使它們在基類中是保護或公有成員。 私有繼承的

原创 __stdcall調用約定

DLL中調用約定和名稱修飾(一) 調用約定(Calling Convention)是指在程序設計語言中爲了實現函數調用而建立的一種協議。這種協議規定了該語言的函數中的參數傳送方式、參數是否可變和由誰來處理堆棧等問題。不同的語言定

原创 protected權限問題

轉載,釋然讀C++ Primer 心中疑惑: http://www.cnblogs.com/harlentan/archive/2011/03/05/2006444.html 關於C++中protected的訪問權限的討論已經是一

原创 Nagel算法

Nagel算法 TCP/IP協議中,無論發送多少數據,總是要在數據前面加上協議頭,同時,對方接收到數據,也需要發送ACK表示確認。爲了儘可能的利用網絡帶寬,TCP總是希望儘可能的發送足夠大的數據。(一個連接會設置MSS參數,因此

原创 算法複習之二分查找

#include<iostream> /* *有序數組的二分法查詢 *list:有序的數組,len:數組的長度,key:查詢的關鍵值 *@return * -1:表示查詢失敗,其他數字:表示查詢成功 */ int binarySe

原创 volatile問題

volatile的中文意思—-易變的。在C語言中,volatile是一個類型修飾符(type specifier),volatile修飾的變量是說這個變量可能會被意想不到地改變,這樣編譯器就不會去假設這個變量的值了。精確地說就是,

原创 堆棧的理論知識

堆和棧的理論知識 1.申請方式 棧:由系統自動分配和回收。 例如,聲明在函數中的一個局部變量int b,系統自動在棧中爲b開闢空間。 堆:需要程序員自己申請,並指明大小,在C語言中用malloc等函數申請。 例如:p

原创 深度探索C++對象模型-指向Data Members的指針

class Point3d{ public: virtual ~Point3d(); //.... protected: static Pointed origin

原创 SGI STL 第二級空間配置器 內存池

從內存池中取控件給free list 使用,是chunk_alloc的工作: template <bool __threads, int __inst> char* __default_alloc_template<__threa

原创 算法複習之希爾排序

#include<iostream> void prin(int* list,int len) { for(int i = 0 ;i<len ;++len) std::cout<<list[i]<<" "

原创 *p=NULL與p=NULL見解

一個是給指針賦值,一個是給指針指向的數據賦值。例如:CHAR szText[32] = { "A"};CHAR *p = szText;*p = NULL; // 說明p指向的數據複製爲NULL,也就是szText[0] = NULL;p

原创 線程池

一些定義 threadpoolmacro.h #ifndef THREAD_POOL_MACRO_H_ #define THREAD_POOL_MACRO_H_ #define MAX_THREAD_NUM 256 #define MI

原创 算法複習之插入排序

#include<iostream> void prin(int *list,int len) { for(int i= 0;i<len;++i) std::cout<<list[i]<<" "<<std:

原创 主線程退出問題

主線程如果正常退出(即執行return返回),那麼整個進程中所有的其他線程都會被清理; 如果主線程內執行ExitThread函數進行退出,那麼主線程會執行退出,但是其他的線程不會被清理,而會一直執行到正常退出爲止。