變數記憶體
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函式,於是讓我想明白...