【C語言入門】182.變數的生命週期

程式裡的每個變數,因為我們需要儲存資料,因此每個變數都需要配置「專屬」的記憶體空間。

我們可以使用 sizeof 運算子知道需要多少空間「位元組」。

專屬也就意味著變數在可以使用的過程中,我們要確保記憶體空間不會被挪為他用。

不過記憶體空間是有限的,用完了怎麼辦?

解決方法就是使用完畢就釋放記憶體空間。

我們需要先有一個概念:

  • 記憶體空間的配置:執行到進入變數可視範圍時。
  • 記憶體空間的釋放:執行到離開變數可視範圍時,也就是執行到 } 時。
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a;
    /* 其他程式片段*/   
}

上述程式的可視範圍大概是這樣,可視範圍指的是我們在程式碼的可以使用某個變數。

a 這個變數名稱的可視範圍會從宣告定義開始,到所在的大括弧(})結束。

那我們之到在變數可視範圍之外的程式碼不可以使用變數名稱來存取變數。

所以我們有了一個想法,就是在執行的時候,當來到 int a 的時候,我們做一個配置,我們會在記憶體中準備一個專屬的空間。

我們知道右大括弧以外之後,就不能再透過這個名字來存取空間了。

因此執行到右大括弧的時候,會釋放記憶體。

我們把這樣的行為稱作自動變數。

一般我們在程式裡的區域變數都是這樣的行為。

我們在執行到宣告定義位置的時候會配置記憶體空間,而當執行到離開變數可視範圍的時候,就會進行釋放的動作。

上述提到的釋放記憶體動作都是自動進行的,不需要我們手動操作。

Leave a Comment

Your email address will not be published. Required fields are marked *