C++ | 動態分配內存

01 靜態分配內存

  • 通常聲明變量都採用“靜態分配”的方式,也就是所有變量聲明必須在編譯階段完成。

02 動態分配內存

  • 動態分配內存是指程序在運行時才提出分配內存的要求,主要目的是讓內存運用更有彈性。
  • 動態分配內存後必須在程序結束前完成釋放內存的操作。
  • 如果程序運行期間分配的內存未釋放,就會造成內存空間的浪費,形成所謂的內存泄漏

動態分配變量

  • C++中,可以分別使用newdelete運算符在程序運行期間動態分配與釋放內存空間。
  • 其中,new運算符會根據所要求的內存大小在內存中分配足夠的空間,並返回所分配內存的指針值,也就是內存地址。
    數據類型 *指針變量 = new 數據類型(初值);
  • 若不設置初值,可將小括號省略。
  • 使用delete運算符釋放內存時,該指針變量所指的內存地址必須是原來new運算符所分配的地址,否則將會造成無法預期的運行結果。

動態分配數組

通常大家將數據聲明爲數組時必須在編譯階段就確定數組的長度,但這樣很容易產生內存的浪費或無法滿足程序所需的問題。別擔心!以上問題可以通過動態分配數組的方式來輕鬆解決。

  • 也就是說,使用動態分配數組就可以在程序運行時再臨時決定數組的大小。
  • 動態分配數組的方式與動態分配變量的方式類似,聲明後會在內存中自動尋找適合的連續內存空間,其長度必須與指定的數據類型再乘以數組的長度相符。
  • 分配完成後,再將該內存區段的起始地址返回給等號左邊所聲明的指針變量(賦值)。

動態分配一維數組的語法如下:

數據類型 *指針數組變量 = new 數據類型[元素個數];
  • 分配動態數組時,必須在中括號內指定預分配數組的元素個數。
  • 當分配成功時,系統會返回該數組的起始地址,否則返回NULL值。
  • 當分配的動態數組在程序中不再使用時,也必須用delete運算符來釋放。

delete運算符釋放動態數組的格式如下:

delete [] 指針數組變量;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章