靜止的(static)和動態記憶體分配(dynamic memory allocation)的區別

在程式設計中,有必要儲存計算資料。這些資料儲存在儲存器中。在計算機程式設計中用來儲存資料的儲存器被稱為變數。變數具有特定的資料型別。因此,分配記憶體來執行程式。記憶體可以透過兩種方式分配。它們是靜態記憶體分配和動態記憶體分配。記憶體分配一旦改變,就不能改變記憶體分配。記憶體不可重用。但是在動態記憶體分配中,一旦分配了記憶體,它就可以更改。靜態記憶體分配和動態記憶體分配的關鍵區別在於,在靜態記憶體分配中,一旦分配了記憶體,記憶體大...

關鍵區別–靜態內存分配與動態內存分配

在編程中,有必要存儲計算數據。這些數據存儲在存儲器中。在計算機程序設計中用來存儲數據的存儲器被稱為變量。變量具有特定的數據類型。因此,分配內存來運行程序。內存可以通過兩種方式分配。它們是靜態內存分配和動態內存分配。內存分配一旦改變,就不能改變內存分配。內存不可重用。但是在動態內存分配中,一旦分配了內存,它就可以更改。靜態內存分配和動態內存分配的關鍵區別在於,在靜態內存分配中,一旦分配了內存,內存大小是固定的;而在動態內存分配中,一旦分配了內存,內存大小就可以更改。

目錄

1. 概述和主要區別
2. 什麼是靜態內存分配
3. 什麼是動態內存分配
4. 靜態和動態內存分配的相似性
5. 並排比較-靜態和動態內存分配的表格形式
6. 摘要

什麼是靜態內存分配(static memory allocation)?

在靜態內存分配中,分配的內存是固定的。一旦分配了內存,就不能更改它。記憶不能增加或減少。例如,在C語言中,如果程序員寫intx,這意味著變量可以存儲一個整數值。字節數取決於計算機。也可以有數組。E、 intx[5];這個x是一個數組,可以存儲同一類型的數據序列。它可以存儲五個整數元素。它不能存儲超過五個元素。在Java中,數組可以創建為,intarr[]=new int[5];數組“arr”可以存儲5個整數值,但不能存儲更多的整數值。

靜止的(static)和動態內存分配(dynamic memory allocation)的區別

圖01:內存分配方法

在靜態內存分配中,一旦變量被分配,它們將保持永久性。初始分配後,程序員無法調整內存大小。如果程序員分配了一個可以存儲10個元素的數組,則不可能存儲超過指定數量的值。如果程序員最初分配了一個可以容納10個元素的數組,但只需要5個元素,那麼內存就浪費了。內存不再需要,但也不可能重用內存。靜態內存分配是固定的,但實現簡單易行,而且速度也很快。

什麼是動態內存分配(dynamic memory allocation)?

有時需要改變內存的大小。所以內存可以動態分配。根據數據元素的**和刪除,內存可以增長或收縮。這就是所謂的動態內存分配。

在C語言stdlib.h頭文件中,有四個函數用於動態內存分配。它們是calloc、malloc、realloc和free。函數malloc()分配所需大小的字節,並返回一個空指針,指向所分配內存的第一個字節。函數calloc()分配所需大小的字節並將其初始化為零。然後返回指向內存的空指針。free()函數用於重新分配已分配的內存。realloc和函數可以修改以前分配的內存。在使用calloc或malloc分配內存之後,內存大小是固定的,但是可以使用realloc函數增加或減少它們。在Java中,集合可用於動態內存分配。

動態內存分配的主要優點是節省內存。程序員可以根據需要分配內存或釋放內存。內存可以在執行期間重新分配,並且可以在不需要時釋放內存。動態內存分配也比靜態內存分配有效。一個缺點是實現動態內存分配很複雜。

靜止的(static)和動態內存分配(dynamic memory allocation)的共同點

  • 兩者都是內存分配機制。
  • 兩者都應該由程序員手動實現。

靜止的(static)和動態內存分配(dynamic memory allocation)的區別

靜態與動態內存分配
靜態內存分配是一種分配內存的方法,一旦內存被分配,它就是固定的。 動態內存分配是一種分配內存的方法,一旦分配了內存,它就可以更改。
修改
在靜態內存分配中,初始分配後不可能調整大小。 在動態內存分配中,內存可以相應地最小化或最大化。
實施
靜態內存分配很容易實現。 動態內存分配的實現很複雜。
速度
在靜態內存中,分配執行比動態內存分配快。 內存分配比動態內存分配慢。
內存利用率
在靜態內存分配中,不能重用未使用的內存。 動態內存分配允許重用內存。程序員可以在需要時分配更多的內存。必要時他可以釋放記憶。

總結 - 靜止的(static) vs. 動態內存分配(dynamic memory allocation)

在程序設計中,靜態內存分配和動態內存分配是兩種內存分配機制。靜態內存分配和動態內存分配的區別在於,在靜態內存分配中,一旦分配內存,內存大小是固定的;而在動態內存分配中,一旦分配了內存,內存大小就可以更改。程序員可以根據應用程序決定內存是靜態的還是動態的。

下載靜態和動態內存分配的pdf文件

你可以下載這篇文章的PDF版本,並按照引文說明離線使用。請在這裡下載PDF版本:靜態和動態內存分配的區別

引用
  • 發表於 2020-10-11 12:09
  • 閱讀 ( 242 )
  • 分類:科技

你可能感興趣的文章

c(c)和目標c(objective c)的區別

...,它們解釋了變數或函式的生存期。它們是auto、register、static和extern。C標準庫提供了一些內建函式,供程式設計師在編碼時使用。例如,有strlen、strcpy和strcat等函式用於字串操作。除此之外,程式設計師也可以建立使用者定義...

  • 發佈於 2020-10-16 06:52
  • 閲讀 ( 55 )

靜止的(static)和java期末考試(final in java)的區別

... static and final in java)? static和final都是Java中的關鍵字。 靜止的(static)和java期末考試(final in java)的區別 Java中的static vs final Static關鍵字表示可以訪問成員變數或方法,而不需要例項化它所屬的類。 最後一個關鍵字表...

  • 發佈於 2020-10-19 07:48
  • 閲讀 ( 53 )

靜態繫結(static binding)和動態繫結(dynamic binding)的區別

...靜態繫結與動態繫結的表格形式 6. 摘要 什麼是靜態繫結(static binding)? 繫結是方法呼叫和方法定義之間的連結。 圖01:靜態繫結和動態繫結 參考下面用Java編寫的程式。 公共A級{ 公共無效方法1(){ System.out.println(“方法1”)...

  • 發佈於 2020-10-19 17:49
  • 閲讀 ( 89 )

分配(calloc)和馬洛克(malloc)的區別

...是固定的,不能在執行時更改。另一種記憶體分配方法是動態記憶體分配。動態記憶體分配有助於在需要時分配更多記憶體,必要時釋放記憶體。<stdlib.h>標頭檔案有四個用於動態記憶體分配的函式。calloc和malloc就...

  • 發佈於 2020-10-24 03:58
  • 閲讀 ( 49 )

靜止的(static)和動態特性(dynamic characters)的區別

...更受讀者的喜愛。這提供了對這兩類字元的基本理解。 靜止的(static)和動態特性(dynamic characters)的區別 •靜態人物在整個小說中沒有發生任何變化,從頭到尾都保持不變。這些大多是故事中的小人物。 •另一方面,動態角色在...

  • 發佈於 2020-10-24 16:55
  • 閲讀 ( 47 )

靜止的(static)和動態路由(dynamic routing)的區別

靜態與動態路由 靜態路由和動態路由的區別在於路由條目進入系統的方式。計算機網路中的路由是指在計算機網路中正確地轉發資料包,使資料包最終到達正確的目的地的過程。路由主要有靜態路由和動態路由兩種型別。在...

  • 發佈於 2020-10-29 09:42
  • 閲讀 ( 46 )

內部的(internal)和外部碎片(external fragmentation)的區別

...固定大小的記憶體後,剩餘的記憶體分配給應用程式。當動態分配記憶體時,會發生外部碎片,在載入和解除安裝多個插槽之後,空閒空間將被分配,而不是連續的。 什麼是內部碎片(internal fragmentation)? 考慮上圖中遵循的是固...

  • 發佈於 2020-10-29 14:06
  • 閲讀 ( 49 )

靜態穩定性(static stability)和動力穩定性(dynamic stability)的區別

靜態穩定性與動態穩定性 一般來說,飛機的穩定性是指飛機維持特定規定飛行條件的能力。穩定性的概念與飛機的平衡密切相關。如果施加在飛機上的淨力和力矩為零,則飛機處於平衡狀態,即升力等於重量,推力等於阻力...

  • 發佈於 2020-11-03 15:19
  • 閲讀 ( 160 )

動態(dynamic)和靜態ip(static ip)的區別

動態IP是指每次連線到網路時都會發生變化的IP,而靜態IP是指無論連線多少次或從網路斷開多少次都保持不變的IP。您是否有靜態或動態IP地址取決於所述網路的管理員。每次連線到網路時,動態IP都會發生變化;這是一種在連線...

  • 發佈於 2021-06-22 11:51
  • 閲讀 ( 49 )

燒焦(char)和瓦爾查爾(varchar)的區別

...har。 記憶體分配 Char使用靜態記憶體分配,而varchar使用動態記憶體分配 長度 char變數的長度可以是0到255之間的任意值,而varchar變數的長度範圍是0到65535。 應用 資料項在char中是一致的,char用於儲存電話號碼之類的資料,...

  • 發佈於 2021-06-25 02:20
  • 閲讀 ( 42 )
h22318874964
h22318874964

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦