函式後 變數記憶體檔案以及空指標的問題

2021-08-22 16:35:21 字數 642 閱讀 7200

變數記憶體

type fun(**)

struct node p;

p=new strucrt node;

區域性變數是在棧上,函式結束,自動釋放。

開闢內存在堆上儲存,函式結束時,不會自動釋放,必須手動釋放。

所以 p的位址會被釋放。new struct node 不會。

附加,new 建立 delete 刪除 而且函式是c++裡面的

malloc 建立 必須用 free 釋放 c語言裡面的

問題二:

p=null ,p->next =null

在c/c++中,遍歷到最後乙個節點時,p->next == null,但是 p->data,即資料域裡還是有數值的,所以此時 p! =null

這是習慣寫法。一般都把null定義成(void *)0,如果直接p=0;編譯器會告警,說把乙個整型賦給乙個指標型。

2. null一般都用於表示空指標,p=null就表示把p指向乙個無效空間位址

3. p指向null的無效空間位址後,對這個位址賦值就是非法的。只有把p指向乙個有效位址空間才可以對它指向的記憶體寫入內容,即可執行*p=xx操作.

#include

struct node

;int main()

程式執行不出來。

指標以及記憶體的分配

1.指標很靈活,這使得指標很難管理,在定義指標時,將在棧中開闢一塊記憶體存放指標的位址 棧內的記憶體由系統分配和釋放 指標的位址記憶體只是存放指標的位址,不存放指標指向的資料,值得注意的是,定義指標時指標會隨機指向一塊記憶體,如int p p會指向一塊不為空的記憶體,相當危險,例如執行判斷if p ...

C語言記憶體模型與指標以及變數的關係

記憶體模型 記憶體分割槽 圖 示例 include int gdata1 10 data int gdata2 0 bss int gdata3 bss段程序執行時,作業系統為.bss初始化為0 static int gdata4 11 data static int gdata5 0 bss st...

空指標的成員函式呼叫

自 http hi.baidu.com sangwf blog item 0be10af482d0c46edcc47464.html 我一直認為技術是沒有止境的,不管你怎麼去學,總有你沒有掌握的地方。但是,人,是不能停下腳步的。今天在檢查乙個mfc程式,看到getsafehwnd函式,於是讓我想明白...