原创 內存映射之共享靜態數據的方法
介紹這種方法之前,我們先介紹下一些背景知識 每個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