深入理解c指標 學習筆記 7 0指標安全及錯誤使用

2021-08-22 08:23:32 字數 766 閱讀 5925

1:位址空間布局隨機化 & 資料執行保護

2:指標的定義

int * ptr1,ptr2; 錯誤的定義2個指標

int *ptr1,*ptr2 ;    正確定義2個指標

使用巨集定義輔助:#define pint int *

pint ptr1,ptr2;

這樣也有問題,巨集定義只是起到乙個書寫替代作用,在編譯過程中,實際和第一次定義一樣

使用型別定義:typedef int * pint

pint ptr1, ptr2;

這樣定義2個整數指標是可以的。定義乙個自定義型別pint為整數指標型別。

3:指標的初始化

3.1:野指標 指標沒有初始化,指標指向的內容不可知。

3.2:一般初始化時將指標指向null,在賦值後,再檢測其是否為null,來判斷是否賦值正確。

3.3:錯誤的解引使用

int* pi;

*pi=& num;    ///看似正確,其實指標pi未初始化,就給其賦值 所指向的位址,會導致錯誤

4:迷途指標

指標被釋放後,還來呼叫指標。

5:將陣列傳遞給函式時,一定要傳遞陣列的長度,這樣會幫助函式避免越過陣列邊界

6:記憶體釋放:沒有釋放,重複釋放。

大部分簡單的做法是:在釋放指標記憶體空間後,將其賦值null,大部分釋放函式會忽略null空指標。

深入理解C指標之三 指標和函式

原文 深入理解c指標之三 指標和函式 理解函式和指標的結合使用,需要理解程式棧。大部分現代的塊結構語言,比如c,都用到了程式棧來支援函式的執行。呼叫函式時,會建立函式的棧幀並將其推到程式棧上。函式返回時,其棧幀從程式棧上彈出。在使用函式時,有兩種情況指標很有用。一種是將指標作為引數傳遞給函式,函式可...

深入理解C指標之三 指標和函式

原文 深入理解c指標之三 指標和函式 理解函式和指標的結合使用,需要理解程式棧。大部分現代的塊結構語言,比如c,都用到了程式棧來支援函式的執行。呼叫函式時,會建立函式的棧幀並將其推到程式棧上。函式返回時,其棧幀從程式棧上彈出。在使用函式時,有兩種情況指標很有用。一種是將指標作為引數傳遞給函式,函式可...

深入理解C指標之四 指標和陣列

原文 深入理解c指標之四 指標和陣列 陣列是c內建的基本資料結構,陣列表示法和指標表示法緊密關聯。一種常見的錯誤認識是陣列和指標完全可以互換,儘管陣列名字有時可以當做指標來用,但陣列的名字不是指標。陣列和指標的區別之一就是,儘管陣列的名字可以返回陣列位址,但是名字不能作為賦值操作的目標。陣列是能用索...