原创 內存映射之共享靜態數據的方法

介紹這種方法之前,我們先介紹下一些背景知識 每個exe或者dll文件都是由節組成,按照規定,每個標準節都是以圓點開頭 舉個例子:代碼節爲”.text” 所有未初始化的數據被編入”.bss”節

原创 MapViewOfFileEx

一個文件的多個視圖具有相關性,即一個視圖的數據發生了變化,其他視圖的相關數據也會發生變化 MapViewOfFileEx這個函數其實就比MapViewOfFile多了個基地址參數,這個值一定要是分配粒度的倍數 下面說說這個函數有什

原创 VirtualQueryEx詳解

DWORD VirtualQueryEx( HANDLE hProcess, // 想要查詢的地址空間所屬的進程的句柄 LPCVOID lpAddress,

原创 windows98 和 windows2000(或者windows2000之後的版本)的內存映射的區別

先看張圖片 在這張圖中可以看出windows98可以映射內存映射文件的地址範圍爲0x80000000-0xBFFFFFFF,而且這段地址範圍還是所有進程共享的 windows2000的可以映射內存映射文件的地址範圍是0x0

原创 const char** 與 char** 相容問題

foo(const char** p){} main(int argc,char** argv){ foo(argv); } 以上代碼在編譯時會發出一條警告信息 warning :argument is incompatib

原创 effective c++條款13

所謂資源就是,一旦用了它,將來必須還給系統 c++最常使用的資源就是動態分配內存,但內存只是你必須管理的衆多資源之一,其他常見的資源還包括文件描述器,互鎖器,圖形界面中的畫筆,畫刷,字型,數據庫連接,網絡socket等等 RAII是Re

原创 JS Number() parseInt() parseFloat() 區別和 聯繫

Number() parseInt() parseFloat() 都會忽略前面的空格和0,但是在忽略完前面所有的空格後,如果找不到有效的數字字符 或者 Number():正負號 小數點 parseInt():正負號 parseFlo

原创 effective c++條款14

1.複製RAII對象必須一併複製它所管理的資源,所以資源的copying行爲決定RAII對象的copying行爲 2.普遍而常見的的RAII class copying行爲是:抑制copying,施行引用計數法 第1條的意思是:我們要根

原创 effective c++條款05

編譯器可以暗自爲class創建default構造函數,copy構造函數,copy assignment函數 看個例子 #include <Windows.h> #include <iostream> #include <string> u

原创 effective c++條款07

1.帶多態性質的基類應該聲明一個virtual析構函數,一個基類只要帶有任何虛函數,都應該聲明一個virtual析構函數 2.所有抽象類的析構函數都應該帶有一份實現,否則鏈接器會報錯(因爲派生類的析構最終會調用到基類的析構函數,如果基類

原创 effective c++條款11

在 operator= 中處理自我賦值 自我賦值發生在對象被賦值給自己時,比如w=w,但是更多的是隱性的自我賦值(不能一下子看穿的) 如果i=j,那麼a[i]=a[j]算不算自我賦值呢 假設有這麼一段代碼 class Bitmap {

原创 effective c++條款04_2

全局變量儘量少使 比如 我在一個文件中定義a=10,在另一個模塊中定義b=a 此時你一定認爲b=10 但是這裏很可能不是10,因爲不同模塊的全局變量初始化是不確定的 有可能b先被初始化,那麼b就是一個不確定的值了 所以,爲了解

原创 effective c++條款12

1.Copying函數應該確保複製“對象內的所有成員變量”及所有”base class”成分 2.不要嘗試以一個copying函數去實現另一個copying函數,應該將共同機能放進第三個函數中,由兩個copying函數調用 如果類中沒

原创 effective c++條款04-1

1.爲內置類型進行手工初始化,C++不保證會初始化他們,這取決於你用的是C++的哪部分(STL自動初始化,C不會自動初始化) 2.構造函數最好使用成員初始化列表,而最好不要在構造函數本體內進行賦值操作,初始化列表列出的成員變量,其順序最

原创 effective c++條款09

在構造和析構函數期間,不要調用virtual函數(或者說調用了也不能顯示出多態的行爲),因爲這類調用從不下降至derived class(派生類) 看如下代碼: #include <windows.h> #include <iostre