空指標和野指標

2021-09-28 19:55:22 字數 528 閱讀 4741

關於多次free()出現的野指標的原因:

指標變數指標變數所指的記憶體空間變數是兩個不同的概念

free()最主要釋放的指標變數所指的記憶體空間,因為記憶體資源是有限的,很寶貴,需要**利用

但是指標變數本身的值還是之前的指向,未重置成null

所以再次釋放的時候,指向了未知的記憶體區域,產生野指標

避免方法:

1.定義指標的時候 初始化成null

2.釋放指標所指向的記憶體空間後,要把指標重置成null

#define _crt_secure_no_warnings

#include#include#include//1.空指標,不允許向null和非法位址拷貝記憶體

void test01()

int * dowork()

//2.野指標

void test02()

void test03()

int main()

野指標和空指標

1.是取位址符號,是公升維度的,取其右邊變數的位址,如 d取變數d的位址。是取值符號 間接訪問 是降維度的,表示右邊指標變數所指向的變數,如 p表示指標變數p所指向的變數 2.float p d 則 p是變數d,而 p是變數p 即變數d 的位址p,p等價於p.3.在定義指標型別一定要和變數的型別對應...

c 空指標和野指標

野指標不同於空指標,空指標是指乙個指標的值為null,而野指標的值並不為null,野指標會指向一段實際的記憶體,只是它指向 我們並不知情,或者是它所指向的記憶體空間已經被釋放,所以在實際使用的過程中,我們並不能通過指標判空去識別乙個指標是否為野指標。野指標可能指向乙個可用的,但是正在被使用的空間,如...

iOS 野指標和空指標

沒有儲存任何記憶體位址的指標就稱為空指標 null指標 野指標是指向 垃圾 記憶體 不可用記憶體 的指標。野指標是非常危險的 比如說 定義了乙個person 的類,person類有乙個 void setname方法 person per person alloc init per setname 這...