記憶體錯誤 注意指標的安全隱患

2021-08-18 11:10:29 字數 690 閱讀 8115

c/c++支援通過指標這一工具來最大程度上提供程式設計的靈活性,這也是c++備受爭議的乙個問題。指標固然很方便,但是錯誤使用所帶來的後果是不堪設想的。我們初學**時應該都有過突然輸出的資料和自己所設想的完全不一致並且資料很莫名其妙的時候,這就說明記憶體處理出現了問題。

記憶體錯誤一般分為以下4種:

記憶體洩漏就是你分配了一塊記憶體空間後,卻沒有釋放,從而導致它一直在隨著程式一起執行。有的時候,你意識到要釋放記憶體,但是可能程式會在break或是return處返回,沒有執行到釋放語句,仍然會導致記憶體的洩漏。

注意:結構體需要釋放其所有的域,否則還是會造成記憶體洩漏。

記憶體只能被釋放一次,當其釋放後這塊記憶體可能會被系統分配給其他程式使用。當你重複釋放該記憶體時,可能會引起很多不必要的麻煩。對於多個指標指向同一塊記憶體的情況,只需要釋放任意乙個指標即可.

資料沒有被很好的初始化,而棧可能包含一些沒有被丟棄的資料,於是在機緣巧合之下,指標可能帶有它們的值。c++可以通過初始化函式來幫助避免這些問題。如果你不知道正確的初始值,可以考慮將指標賦值為null。

第乙個常見原因為陣列越界。如果指標修改了陣列範圍外的值,則可能導致程式的崩潰。

第二個常見原因為分配空間不足。很多c語言的字串操作並不對空間做檢查,比如strcpy函式和strcat函式,如果給的空間不夠,會接著向後寫入,從而修改了未知的資料。

當然,操作符的優先權也會導致超量寫記憶體,比如++或–等等。

docker remote api 的安全隱患

開啟docker的api,首先要知道docker的守護程序daemon,在下認為daemon作為client和service連線的乙個橋梁,負責代替將client的請求傳遞給service端。預設情況daemon只由root控制,但我們可以通過 h繫結到埠上,這樣通過埠訪問的方式執行命令。我用的是u...

多執行緒的安全隱患

資源共享 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題 解決方法是互斥鎖 互斥鎖使用格式 synchronized 鎖物件 注意 鎖定1份 只用1把鎖,用多把...

ASP Access的安全隱患及對策

圖1 註冊頁面 設計要求使用者註冊成功後系統啟動hrmis.asp?page 1頁面。如果不採用session物件進行註冊驗證,則使用者在瀏覽器中敲入 url hrmis.asp?page 1 即可繞過註冊介面,直接進入系統。利用session物件可以有效阻止這一情況的發生。相關的程 序 如下 讀取...