C 41 記憶體操作相關問題分析一

2021-09-29 08:18:59 字數 1147 閱讀 3569

野指標:

指標變數中的值是非法的記憶體位址,進而形成野指標。

野指標不是null指標,是指向不可用記憶體位址的指標。

null指標並無危害,很好判斷也很好除錯。

c語言中無法判斷乙個指標儲存的位址是否合法

野指標的由來:

區域性指標變數沒有被初始化。

指標所指向的變數在指標之前被銷毀。

使用已經釋放的過的指標。

進行了錯誤的指標運算。

進行了錯誤的強制型別轉換。

#include #include int array[40]= ;

int main()

free(p1);

// p1 = null; // 這樣之後後續可以知道**操作錯位

for(i=0; i<40; i++)

return 0;

}

基本原則:

絕不返回區域性變數和區域性陣列的位址

任何變數在定義後必須0初始化

字元陣列必需確認0結束符後才能成為字串

任何使用了與記憶體操作相關的函式必需指定長度資訊。

struct student

;char* func()

void del(char* p)

int main()

{ struct student s; // 沒有初始化,產生野指標

char* p = func(); // 產生野指標,返回區域性陣列的位址,而且字元陣列沒有『\0』

strcpy(s.name, p);

s.number = 99;

p = (char*)malloc(5);

strcpy(p, "d.t.software"); // 產生野指標,操作了野指標所指向的記憶體空間

//任何使用了與記憶體操作相關的函式必需指定長度資訊。

del(p);

return;

1.斷錯誤本質是記憶體錯誤

2.絕大數的bug都可以通過遵循基本的程式設計原則和規範來避免

3.要牢記和理解記憶體操作的基本原則,目的和意義。

41 記憶體操作經典問題分析一

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 野指標 1 指標變數中的值是非法的記憶體位址,進而形成野指標 2 野指標不是null指標,是指向不可用記憶體位址的指標 比如函式返回值為陣列 3 null指標並無危害,很好...

40 記憶體操作經典問題分析1

1 野指標 2 野指標的由來 include include int main free p1 p1變成野指標,p1裡面還存著位址值,應該p1 null 糾正 include include int array 40 int main free p1 printf p n p1 p1 null p1...

C語言檔案操作的相關 一

c語言中對檔案的操作,是很重要的,今天我首先對對檔案進行操作的函式進行整理學習 1.fread 原型 size t fread void buffer,size t size,size t count,file stream size 要讀取的每個資料項的位元組數 count 要讀取的資料項的個數 ...