一、在多線程編程中,任什麼時候候主線程都應該等待子線程結束。
二、注意從鏈表中取出節點後,須要將取出來的節點的next指針置爲NULL
三、clock()函數計算的是該程序從啓動到函數調用佔用CPU的時間。若是是多線程,則會是多個線程佔用CPU的總時間。單位是時鐘單位(滴答數)。CLOCKS_PER_SEC表示的是一秒鐘有多少個時鐘單位。
四、使用hash_map時,若是關鍵字是char*型的,注意傳進去的變量是必須是全局的或者是使用堆中申請的空間。不然會出現一些意想不到的錯誤。
五、C語言中可使用函數指針實現不進行判斷來調用不一樣函數。只須要給函數指針賦不一樣的值便可。
六、直接定義數組時,數組中的元素不能過多,不然會出現段錯誤。直接定義的數組是存放在棧中。
七、在C語言中,函數指針是實現多態的手段。應該善用函數指針。善用回調函數。
八、在實現回調函數是,最好預留一個變量用於傳入上下文。
九、使用全局變量時必須先進行初始化。
十、在編程中,若是須要隔離變化能夠多考慮使用函數指針和接口共同實現。
十一、在結構體中使用相似char data[0]的方式建立元素能夠減小內存使用。由於data[0]沒有元素,不佔用內存空間。
十二、若是程序運行時有內存越界而調試時有內存越界,則多是緩存區過小或者死鎖。
1三、在使用緩存區以前必須考慮是否須要清空緩存。
1四、在任什麼時候候都必須考慮內存越界問題。不能感受不會越界就不進行處理
1五、儘可能不要依靠編譯器來檢查程序的語法錯誤。在程序編寫完了,第一件事情不是編譯,而是檢查至少3遍。第一遍檢關注語法錯誤、代碼排版和命名規則等問題,第二遍關注常見編程問題,如內存泄漏和越界,變量是否初始化,函數忘記返回值等,第三遍關注邏輯問題。檢查邏輯是否有問題。
1六、儘可能不要使用全局變量
1七、避免常見錯誤:內存泄漏、內存越界、野指針、訪問空指針、引用未初始化變量、結構大小變化引發的錯誤、分配/釋放不配對、返回指向臨時變量的指針、重命名符號、棧溢出、忘記返回值、多線程共享變量沒有用valotitle修飾。
1八、在向hash_map中插入數據時,不要使用數據賦值的形式,除非不須要處理插入失敗的狀況。
1九、對於構造函數對某些變量初始化失敗的狀況,應該以拋出異常的形式來進行處理。
20、棧空間是很小的,不要試圖爲定義超大局部數組(大於2M)。在函數調用過程當中,會把局部變量和參數入棧,若是局部數組過大,會致使棧溢出。