動態記憶體的問題

2021-05-10 22:08:02 字數 392 閱讀 2090

函式體內的區域性變數在函式結束的時候不會自動消亡;

(1) 指標消亡了,並不代表它所指的記憶體會自動釋放。

(2) 記憶體被釋放了,並不代表指標會消亡或者成為null。

「野指標」 不是null指標,而是指向「非法」記憶體的指標,人們一般不會錯用null指標,因為if語句很容易判斷,

但是「野指標」很危險,if語句對它不起作用的。

「野指標」的成因:

(1) 沒有初始化指標變數,任何指標變數剛建立時不會自動成為null,它的預設是隨機的,所以指標在建立的同時應該初始化,

要麼設定為nul,或者指向有效的記憶體位址;

(2 )指標p被free或者delete後,沒有置為null,讓人誤認為p仍然是有效的指標,

(3) 指標操作超越了變數的作用範圍。

動態記憶體的學習

1 物件有可能會被分配到三類空間中 1 靜態記憶體 2 棧記憶體 3 記憶體池 堆 2 物件根據所在不同的空間有兩種不同的建立和銷毀方法 1 前兩種是由編譯器自動建立和銷毀的 2 最後一種的生存期是由程式設計師編寫程式顯式控制的。3 動態記憶體的直接管理由new delete來管理的 容易出問題 4...

C的動態記憶體

在陣列問題中,常常會遇到需要建立長度為變數的陣列,通常的陣列定義就不能滿足這一要求了,這時就有動態記憶體的出場了。動態記憶體是乙個動態建立大記憶體的概念,它存在於stdlib.h這一頭檔案裡,其中有malloc calloc realloc free這四個函式來表示動態記憶體。malloc是分配記憶...

動態記憶體的傳遞

可以採用3中辦法來解決動態記憶體不能傳遞的問題 在c語言中,可以通過採用指向指標的指標解決這個問題,可以把str的位址傳給函式getmemory.在c 中,多了一種選擇,就是傳遞str指標的引用 使用函式返回值來傳遞動態記憶體 如下 include using namespace std void ...