動態變數和靜態變數的區別,堆和棧的區別

2021-09-06 05:05:31 字數 555 閱讀 4135

動態變數和靜態變數的區別:

1、儲存

位置動態

變數:儲存在記憶體出棧

資料區靜態變數

:儲存在全域性資料區(靜態資料區)

2、生命期

動態變數:根據你定義的位置確定,比如你在乙個函式中定義的,那麼超出該函式範圍變數將失效

靜態變數:程式結束時才釋放

3、

作用域動態變數:同樣的要根據你定義的位置才能確定,和第二點的一樣

靜態變數:當前檔案中有效

堆和棧的區分:
分配方式:堆都是動態分配的,沒有靜態分配的堆。
棧有2種分配方式:靜態分配和動態分配。靜態分配是編譯器完成的,比如區域性變數的分配。動態分配由alloca() ,alloca的函式返回的時候, 它分配的記憶體會自動釋放,但是棧的動態分配和堆是不同的,堆需要手動釋放。
堆是通過new,malloc, calloc, realloc等來分配的記憶體,需要手動析構,棧由系統管理,無需人為處理。

動態變數和靜態變數的區別,堆和棧的區別

動態變數和靜態變數的區別 1 儲存 位置動態 變數 儲存在記憶體出棧 資料區靜態變數 儲存在全域性資料區 靜態資料區 2 生命期 動態變數 根據你定義的位置確定,比如你在乙個函式中定義的,那麼超出該函式範圍變數將失效 靜態變數 程式結束時才釋放3 作用域動態變數 同樣的要根據你定義的位置才能確定,和...

靜態變數和動態變數

首先,變數的儲存型別可分為四類 自動型別 auto 暫存器型別 register 靜態型別 static 外部型別 extern 動態變數 自動型別 auto 暫存器型別 register 靜態變數 靜態型別 static 外部型別 extern 屬於動態全域性變數,可以省略auto識別符號,因此,...

成員變數和靜態變數的區別

成員變數和靜態變數的生命週期 成員變數隨著物件的建立而存在,物件 就被釋放。靜態變數隨著類的載入而存在,類消失靜態變數就消失。呼叫方式不同 成員變數只能被物件呼叫 靜態變數可以被物件呼叫,還可以被類名呼叫。別名不同 成員變數也稱為例項變數。靜態變數也成為類變數。資料儲存位置不同 成員變數儲存在堆記憶...