指標常遇到的問題

2021-07-15 04:56:49 字數 834 閱讀 6258

指標是個涉及到記憶體,很容易產生bug的根源,總結了幾點指標容易出錯的問題:

1、對於多級指標,不要在多個函式中分配記憶體空間,例如:

void func(char** p)

}int main()

上面這段**就是現在main函式中對p指向的空間開闢了一段記憶體,然後又在func函式中開闢了二級記憶體,這樣在專案開發中是堅決不能出現的,難於維護,難於維護,難於維護,重要的事情說三遍。因為不好釋放記憶體,在main中或者func中釋放都不合適。

2、判斷記憶體是否分配成功

若記憶體沒有分配成功,就去操作自以為分配成功的記憶體,一操作就絕對down掉

3、不能操作null空間

跟第二條型別,在操作指標所指向的記憶體空間時一定要判斷是否為null,null空間時系統保護的記憶體空間,不准使用者操作

4、記憶體洩漏

這個就不用說了,初學者常犯的錯誤,總忘記釋放記憶體,另外重點是可能一段**中分配好幾段記憶體,前面都申請成功了,後面有乙個申請失敗,那麼前面申請的都要釋放掉再進行後面的操作或者處理,否則就記憶體洩漏了。

5、野指標

野指標也是個初學者常犯的錯誤,釋放完記憶體空間後,一定要讓指標指向null,否則就變成野指標了,這個就不用說了。

6、(*p)++ 與 *p++

一定要區分(*p)++ 與 *p++兩者的區別,乙個是指標指向的記憶體空間裡的值加1,乙個是指標的位址加1。這也是經常出現bug的乙個地方。

移動端常遇到的問題

時間控制項開啟時,會呼叫到手機鍵盤 解決方案,監聽focus事件,當觸發時,執行this.blur 原生js獲取元素高度 box 獲取盒子的內容高度,內容高度也可用用box.clientheight獲取,內容高度不包括邊框和外邊距和滾動條 var box document.getelementbyi...

SQL常遇到的小問題整理

2015.10.30 今天寫了個統計男女比例的sql select sum case when p.psrd gender m then 1 else 0 end as male,sum case when p.psrd gender f then 1 else 0 end as female fr...

常遇到的session與cookie問題集

hello,我又來啦,我就是那個無名的泰迪。我相信session和cookie這兩個名字大家都已經熟悉的不能再熟悉了吧,那它又是如何使用的呢,下面就讓泰迪帶你瀏覽大千世界吧。簡單看個圖,我們熟悉的三次握手。說到session就會想到登入,那我們先說說為什麼有session這麼乙個機制。session...