規範:
1、每個局部變量都必須進行初始化賦值,否則會給代碼留下不可預估的風險:
------因爲局部變量裏面值是系統隨機分配的值,所以可能會在運行N次後的不經意間程序出現了問題,而當你需要去重現這個問題、現象時,卻又遇不到,讓人不得不爲自
己的軟件穩定性捏一把冷汗。
2、每一次內存的申請,必須對應一次內存的釋放:
-----因爲如果是小的內存泄漏,可能在項目緊急時,沒能經過能使軟件跑崩潰的時間,導致軟件測試正常的假象;當軟件進入重要環節 或 到客戶手裏使用時,被發現了這個問題,那麼這個問題會給解決問題,如期交付、和客戶滿意度都會帶來不可小視的影響。
3、申請一個套接字 就要對應關閉一個套接字:
----因爲套接字的可用數量是夠大的,但是對於多鏈接軟件,在短時間的測試內可能無法發現這個問題,但是如果軟件長時間內使用後,就可能達到套接字有限數量的瓶
頸,進而導致軟件使用異常,這個問題同樣發現有時間域的問題,很容易在最關鍵的時候被發現,進而導致項目無法驗收,所以必須謹慎。
經驗:
軟件在Debug版本運行正常,而在Release版本下運行一段時間後就報錯的問題 及 原因:
VS在Debug條件下,會自動將局部變量進行初始化,所以在調試的時候,上面的第一點,可能在Debug環境下就無法被發現,但是一旦切換到Release環境下,編譯器不會給局部變量賦初始值,所以導致軟件在Debug板不報錯而在Release版本下運行時就會報錯。
對一個無效的套接字多次重複使用 closesocket()會導致軟件崩潰:
我就是在使用記錄視頻通道數的局部變量時沒有進行賦初始值,導致在循環關閉通道的網絡接口時,異常的多次closesocket,導致軟件運行一段時間後就報錯,並且用Debug版本測試一直髮現不了,用Release測試就始終出現,讓我苦苦查找很久很久,才解決。
希望對朋友們有用^_^ ^_^ ^_^......