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

2021-09-26 01:20:54 字數 1374 閱讀 3935

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 = (int*)malloc(40*sizeof(int));

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

return 0;

}

所有的動態空間都是給我們使用,即便這個時候,有野指標,但是也不會出錯,指標滿天飛。

指標指向一段動態記憶體,在free這段動態記憶體後,我們最好要將它置為空指標,防止它變成野指標。

3、杜絕野指標的基本原則

#include #include #include struct student

;char* func()

void del(char* p)

int main()

糾正程式:

#include #include #include #define size 40

struct student

;char* func()

void del(char* p)

int main()

; char* p = func()

;strncpy

(s.name, p, 5)

; s.number = 99;

p = (char*)

malloc

(6);

strncpy

(p, "d.t.software", 5)

; p[5] = '\0'

;del

(p);

p = null;

printf

("s.name = %s, s.number = %d\n", s.name, s.number)

; return 0;

}

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

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

PV操作 經典問題分析

為了提高在實際問題中分析和思考多個執行緒之間同步互斥問題的能力,接下來將講解 pv操作,這也是作業系統中的重點和難點。本文將會先簡要介紹下 pv操作的 和基本使用方法,然後再通過兩道經典的計算機考研真題 放水果和安全島來示範如何運用 pv操作。先講講pv操作的起源和用法。1962年,荷蘭學者dijk...

PV操作 經典問題分析

為了提高在實際問題中分析和思考多個執行緒之間同步互斥問題的能力,接下來將講解 pv操作,這也是作業系統中的重點和難點。本文將會先簡要介紹下 pv操作的 和基本使用方法,然後再通過兩道經典的計算機考研真題 放水果和安全島來示範如何運用 pv操作。先講講pv操作的起源和用法。1962年,荷蘭學者dijk...