發生記憶體錯誤是件非常麻煩的事情。編譯器不能自動發現這些錯誤,通常是在程式執行時才能捕捉到。而這些錯誤大多沒有明顯的症狀,時隱時現,增加了改錯的難度。有時使用者怒氣沖沖地把你找來,程式卻沒有發生任何問題,你一走,錯誤又發作了。 常見的記憶體錯誤及其對策如下:
* 記憶體分配未成功,卻使用了它。
有三種情況:
(1)程式中的物件呼叫關係過於複雜,實在難以搞清楚某個物件究竟是否已經釋放了記憶體,此時應該重新設計資料結構,從根本上解決物件管理的混亂局面。
(2)函式的return語句寫錯了,注意不要返回指向「棧記憶體」的「指標」或者「引用」,因為該內存在函式體結束時被自動銷毀。
(3)使用free或delete釋放了記憶體後,沒有將指標設定為null。導致產生「野指標」。
注意事項:
【規則1】用malloc或new申請記憶體之後,應該立即檢查指標值是否為null。防止使用指標值為null的記憶體。
【規則2】不要忘記為陣列和動態記憶體賦初值。防止將未被初始化的記憶體作為右值使用。
【規則3】避免陣列或指標的下標越界,特別要當心發生「多1」或者「少1」操作。
【規則4】動態記憶體的申請與釋放必須配對,防止記憶體洩漏。
【規則5】用free或delete釋放了記憶體之後,立即將指標設定為null,防止產生「野指標」。
Ruby常見錯誤及解決辦法
ruby常見錯誤及解決辦法 更新中.module test def add up x,y return x y endendputs add up 100,89 如上 執行出現以下兩個錯誤。錯誤1 class module name must be constant 解決方法 module名字tes...
HTTPS常見錯誤及解決辦法
問題 問題描述 解決方法 net err cert date invalid 的ssl證書有效期過期導致的 重新申請新的ssl證書 net err cert common name invalid 訪問的網域名稱和證書繫結的網域名稱不一致導致 請檢查訪問的網域名稱或者證書繫結的網域名稱是否相同 ne...
常見a標籤的錯誤及解決辦法
target blank 是一種有漏洞的使用方式 如果要用的話,那麼就需要加上rel noopener noreferrer 用來阻止漏洞 解決辦法 執行 npm run eject 新增配置 在package.json檔案中新增如下 eslintconfig 例如 出現警告 解決辦法 1.新增文字...