一、空指標問題
1、指標在使用前沒有做為空判斷,導致程式crash
2、指標在new之後沒有判斷是否new成功
3、類成員指標沒有初始化,卻在析構函式中判斷是否為空並刪除
二、記憶體越界問題
記憶體越界導致的問題往往比空指標來得更嚴重,因為有很高的機率可能導致宕機。
以下是我們採取的解決方案:
wsprintf
和sprintf
一律使用
_snwprintf
和_snprintf
代替memcpy 盡量使用 safememcopy
代替safememcopy
的實現如下:
#define
safememcpy_suc
0#define
safememcpy_length_error
1#define
safememcpy_pointnull_error
2inline
intsafememcopy(void* pdest, size_t
lendest, const
void* psource, size_t
lensource)
if((null == pdest) || (null == lensource))
memcpy(pdest, psource, lensource);
return
safememcpy_suc;}三、
記憶體洩露
1、 刪除指標陣列時,容易忘記刪除陣列中指標指向的空間,造成記憶體洩露
2、 在
wm下構造字型,建立畫筆等資源,在使用後忘記刪除,造成記憶體洩露。建議少使用
hfont
,hpen
等控制代碼方式,而採用
cfont, cpen
等3、
在執行邏輯複雜,擁有多處返回的函式中,往往容易在函式返回時忘記刪除指標,造成洩露。建議多使用智慧型指標。
四、記憶體浪費
1、在存在繼承關係的地方。除非確定的確屬於公有的部分,否則不要將多餘成員放置到基類中
2、使用量比較大的結構體盡量不要採用乙個最大長度的陣列在儲存內容,建議改為指標和長度表示
go語言程式設計 要點總結(六)安全程式設計
單秘鑰加密,整個系統由需要加密的明文,加密演算法和秘鑰工程。常見的有des aes rc4等 雙秘鑰加密,整個系統由需要加密的銘文,加密演算法,秘鑰和公鑰。公鑰和秘鑰都可以用來加密。常見的有rsa等 不可解密,雜湊演算法,md5和sha 1等 指用於標記數字檔案擁有者 創造者 分發者身份的字串。擁有...
shell程式語言注意要點
1 和 區別 相同點 都表示傳遞給指令碼的所有引數。不同點 不被 包含時,和 都以 1 2 n 的形式組成引數列表。被 包含時,會將所有的引數作為乙個整體,以 1 2 n 的形式組成乙個整串 會將各個引數分開,以 1 2 n 的形式組成乙個引數列表。2 shell 運算子 shell 和其他程式設計...
WEB安全測試要點總結
一 大類檢查點 二 測試項詳細說明 上傳功能 註冊功能 登入功能 但很多cookie需要給前端js使用。所以這裡只需要關注關鍵cookie,即唯一標識使用者及登入狀態的會話標識需要新增這個屬性。驗證碼功能 忘記密碼功能 密碼安全性要求 橫向越權測試 不同使用者之間session共享,可以非法操作對方...