vc 程式設計小認識

2021-06-11 04:35:36 字數 941 閱讀 9081

今天找了乙個編寫快取表的程式,看起來還是可以的。就是感覺有點像學生的作業,就拿過來用了,後來在用的過程中碰到了一些問題,記錄下來。

1、error lnk2001: 無法解析的外部符號              

這種以前就見到過,一般都是引用其他檔案或dll中的未定義函式或變數,之前我碰到的都是這個樣子的,但是這次我卻怎麼也沒發現,後來明白了,是因為類中如果定義了靜態變數 一定要在類外先進行初始化  如:

intnode::a = 1;    連線講的比較清楚:

2、作為快取區,例子定義了單鏈表儲存資料,用資源表(可讀表與可寫表)來索引資源,但是單鏈表只在第一次儲存資料的時候 new char[length] ,第二次使用的時候如果是第一次已經new過的空間,則先memset然後memcpy ,邏輯上是沒有問題,但是實際上如果第二次賦值空間需要比第一次大,那麼就出現了new的空間不夠用,debug版本就會報錯,release版本一般不會報錯,但是這裡存在風險,可能會產生資料錯誤,而且在最後delete的時候,因為指標指向的空間比開始的時候new的空間大,那麼也會報錯。連線:            講的不錯。

3、當我檢測memory leak的時候發現,好多memory leak, 第一種情況:new了之後沒有delete,會出現memory leak。。。 第二種情況:int轉換成string的時候如果用ostream或sstream等會出現memory leak 。。。   順便提一句,檢測memory leak的方法同上連線。

4、不知道為什麼我本來new char[3] ,strcpy("ooo"), 但是儲存之後卻變成了"ooo        ?",就是說變長了,很迷惑,後來加多引數length在獲取內容之後先進行擷取,得到了正確結果。

5、好多時候出現 heap coruption ,實際上是我主線程登出之後,呼叫的類已經登出,但是快取還在寫檔案,呼叫寫的變數已經被析構函式登出了。故執行緒呼叫報錯,使用同步方式,解決了這個問題。

VC程式設計小技巧

用vc新建dialog.新增rich edit 後編譯可以通過,執行後自動退出,原因即是沒有初始化的後果。解決方法 解釋 wasatarup 是應用程式呼叫的windows sockets dll的第乙個函式,在呼叫任何winsock api之前,必須呼叫wsastartup 進行初始化,最後呼叫w...

VC程式設計小技巧之樹操作

問題提出 請問treeview控制項和treectrl控制項的用法有何不同呢?向怎麼imagelist控制項中加圖象呀?解決方法 1 hicon hicon 8 m imagelist.create 16,16,0,8,8 for int n 0 n 8 n m imagelist.add hico...

VC程式設計小技巧之列印相關

為 afx idd preview 這個id建立乙個dialogbar。則系統就會用新建立的dialogbar代替系統預設的那個 1.要列印哪個視就 cmainframe afxgetmainwnd m wndsplitter.setactivepane 要列印的那個視對應的pane 2.有乙個單文...