容易造成core的原因

2021-06-03 12:49:37 字數 1168 閱讀 4934

類別

子類別描述

變數異常:

陣列越界

字串異常結束

區域性變數過大

全域性變數執行緒不安全

陣列越界

使用陣列必須檢查下標越界

字串異常結束

使用char sss[100]類似的字串時,判斷』\ 0』結束標誌,而不是判斷長度

區域性變數過大

分配很大空間的區域性變數導致棧溢位

全域性變數執行緒不安全

多執行緒共同操作全域性變數,但沒有對該變數加鎖

函式異常:

函式引數傳替異常

函式過度遞迴呼叫

字串安全函式

函式引數傳替異常

對不確定引數個數的函式,例如 fmt 系列的,引數個數不對,導致棧被破壞

函式過度遞迴呼叫

過渡遞迴呼叫導致棧溢位

字串安全函式

使用strcat,strcpy等很容易造成越界,推薦使用strncat,strncpy等函式,或者盡量不要使用字元陣列,而使用std::string

記憶體異常:

記憶體分配異常

寫保護記憶體

記憶體**異常

共享記憶體異常

棧溢位堆記憶體洩漏

記憶體分配異常

申請記憶體分配的時候不檢查是否成功,或者使用一些記憶體管理庫,申請的記憶體有長度限制

寫保護記憶體

對受保護記憶體資料強行賦值

記憶體**異常

重複釋放記憶體空間或釋放不存在的指標位址空間

共享記憶體異常

掛接共享記憶體不檢查大小是否不匹配,或者操作前不用訊號鎖

棧溢位因為在函式區域性使用很大的區域性變數,導致棧溢位

堆記憶體洩漏

直接對記憶體指標賦值為空或使用完記憶體不釋放

指標異常:

空指標野指標

指標強制轉換

空指標空指標異常,要嚴格的控制指標的使用,每個可能出現空指標的地方都要注意檢查

野指標野指標所指的記憶體區域已經釋放或者不再對映到程序空間,這時對這塊指標指向的記憶體進行操作,就會可能core

指標強制轉換

在使用強制型別轉換時要注意,尤其是強制轉換乙個型別指標的時候

操作異常:

更新so時直接覆蓋

更新so時直接覆蓋

更新so的時候,如果是覆蓋so,會導致程序異常core掉,正確做法視 **實現而定

3 2 1 造成誤差的原因分析

比如說識別的機器學習演算法,可能會有一些被錯誤的識別了。我們要想提高準確率,可以先去分析一下到底有哪種被錯誤的的識別了。比如說有100張被錯誤的識別了,我們可以對這100張進行分類,看哪些被錯誤的識別成了貓哪些被錯誤的識別成了狗。或者是哪些,因為比較模糊兒被錯誤的識別。於是,我們就可以針對這些被錯誤...

造成高CPU消耗的原因

1.索引的缺失 根據執行計畫以及追蹤,確定缺少的索引,新增索引 2.統計資訊過時 統計資訊過時,執行計畫就會不是最優的,可能產生大量的表掃瞄,需要更新統計資訊 update statistics table or indexed view name 3.where子句中使用函式 where 子句中使...

iOS容易造成循引用的場景

timer就是乙個能在從現在開始的未來的某乙個時刻又或者週期性的執行我們指定的方法的物件 nstimer執行的必要條件 對應執行緒的runloop要開啟,mode要對應 下面看timer的迴圈引用 void setblock testblock block id init return self v...