筆記內容多是程式設計時所遇到的問題,通過上網查資料以及詢問他人所得,將它們記錄下來。
1、建立執行緒之後為什麼要使用closehandle()來關閉控制代碼?為什麼closehandle之後執行緒還繼續執行呢?
建立執行緒後返回了執行緒控制代碼,新建立的執行緒核心物件的使用計數是2,乙個是執行緒本身,乙個是建立執行緒的執行緒,建立執行緒的執行緒closehandle後,新的執行緒的核心物件使用計數為1,當這個新執行緒結束執行後核心物件的使用計數還要減1,這時核心物件的使用計數是0,則系統會自動刪除新執行緒的核心物件,這是正常的處理流程。你如果不顯示的呼叫closehandle,則新執行緒結束執行後,由於核心物件使用計數為1,所以不會刪除核心物件,會造成記憶體洩露(有些說法是這樣的:將會造成核心物件
的洩露,相當於控制代碼
洩露,但不同於記憶體洩漏
),不過當整個程序結束時作業系統會自動關閉該程序的所有的核心物件包括這個新執行緒的核心物件,所以你不呼叫closehandle問題不大,只是在你的程序執行的時候會造成記憶體洩露,程序結束後系統是會自動清理的。
2、如何將類的成員函式作為執行緒函式?
類的成員函式作為執行緒函式時,需要將執行緒函式宣告為static,但是static函式只能呼叫static成員,如果執行緒函式想呼叫類中的其它成員,可以將this指標當作引數傳遞給執行緒函式,這樣執行緒函式就可以呼叫類中的其它成員了,如下所示:
3、字符集和編碼
常見字符集名稱:ascii字符集、gb2312字符集、big5字符集、gb18030字符集、unicode字符集等。計算機要準確的處理各種字符集文字,需要進行字元編碼,以便計算機能夠識別和儲存各種文字。
ascii字符集對應的有ascii編碼。
gb2312字符集有gb2312編碼。
gb2312編碼將
ascii裡本來就有的數字、標點、字母都統統重新編了兩個位元組長的編碼,這就是常說的"全形"字元,而原來在127號以下的那些就叫"半形"字元了。
unicode字符集有utf-8、utf-16、utf-32編碼。
4、自定義訊息
定義乙個自定義訊息號:const uint wm_mymessage = wm_user + n; // 自定義訊息一般大於wm_user,然後就可以為該訊息新增映**。
推薦使用者自定義訊息至少是wm_user+100,因為很多新控制項也要使用wm_user訊息。
#define wm_mymessage wm_user+999 //訊息的定義
afx_msg lresult onmymessage ( wparam wparam, lparam lparam ); //訊息響應函式的宣告
on_message ( wm_mymessage, onmymessage ) //訊息與響應函式的對映關係
lresult cxx::onmymessage ( wparam wparma, lparam lparam ) //響應的函式的實現
如果該訊息不需要返回值,也不需要引數,那麼可以使用巨集on_message_void來對映
const uint wm_mymessage = wm_user + n;
afx_msg void onmymessage ();
on_message_void ( wm_mymessage, onmymessage )
void cxx::onmymessage ()
C 零散筆記
關於控制項 控制項實質就是乙個類 屬性中的name就是它例項後的變數名 屬性中的其他東西就是類中的變數或函式 例如 可以直接通過name.backcolor color.yellow 來直接操作控制項的背景顏色 color類 裡面封裝的大量的顏色變數 r,g,b 通過color.blue呼叫 col...
Unity零散筆記
1 預處理 在c 中的預處理功能很弱。除了使用 if else end 之外,還可以嘗試使用 system.diagnostics.conditional unity editor 這種屬性條件。2 carontefx外掛程式 這個外掛程式很好,但是不適合做遊戲,它的物理模擬應該是給做電影用的。好像...
零散的C筆記
如何表達陣列型別 如何表達函式指標 c 編譯器如何管理兩函式之間變數的關係?如果定義了乙個.cpp,然後再改為.c可能會出現問題,找不到main函式 指標變數和它所指向的記憶體空間變數是兩個不同的概念 指標指向誰,就把誰的位址賦給指標變數 記憶體四區概念 主調函式 main等 呼叫被調函式 1.ma...