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

在程式設計中,有必要儲存資料。資料儲存在儲存器中。這些記憶體位置稱為變數。每個變數都有特定的型別。它們可以是整數、浮點、雙精度、字元等。還有一些資料結構可以儲存相同型別元素的固定大小的順序集合。它是一個數組。程式設計師必須宣告陣列大小。如果程式設計師宣告五個元素的整數陣列,則不可能為大於宣告大小的索引賦值。記憶體分配是固定的,不能在執行時更改。另一種記憶體分配方法是動態記憶體分配。動態記憶體分配有助於在需要時分配更多內...

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

 

在編程中,有必要存儲數據。數據存儲在存儲器中。這些內存位置稱為變量。每個變量都有特定的類型。它們可以是整數、浮點、雙精度、字符等。還有一些數據結構可以存儲相同類型元素的固定大小的順序集合。它是一個數組。程序員必須聲明數組大小。如果程序員聲明五個元素的整數數組,則不可能為大於聲明大小的索引賦值。內存分配是固定的,不能在運行時更改。另一種內存分配方法是動態內存分配。動態內存分配有助於在需要時分配更多內存,必要時釋放內存。<stdlib.h>頭文件有四個用於動態內存分配的函數。calloc和malloc就是兩個這樣的函數。calloc和malloc之間的關鍵區別在於,calloc分配內存並將分配的內存塊初始化為零,而malloc分配內存,但不會將分配的內存初始化為零。訪問calloc中的內容將得到零,但是malloc將給出一個垃圾值。

目錄

1. 概述和主要區別
2.什麼是calloc
3. 什麼是malloc
4. calloc和malloc的相似性
5. 並列比較——表格形式的calloc與malloc
6. 摘要

什麼是分配(calloc)?

內存分配是為正在執行的程序分配內存的過程。有時需要改變內存的大小。因此,使用動態內存分配。它是用指針完成的。指針是保存另一個變量地址的引用變量。

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

圖01:calloc和malloc

calloc代表“連續分配”。它分配相同大小的多個內存塊。calloc的語法如下。需要兩個參數。它們是塊的數量和每個塊的大小。函數calloc返回一個空指針,因此使用cast運算符根據所需的數據類型返回指針類型。

void*calloc(大小數字,大小大小大小);

參考下面的簡單C程序。

#包括

#包括

內部主(){

int ptr*=(int*)calloc(20,sizeof(int));

如果(ptr==NULL){

printf(“內存未分配”);

}

其他{

printf(“內存已分配”);

}

返回0;

}

根據上述程序,分配可容納20個元素的連續存儲器塊。每個都有整數大小。使用sizeof(int)是因為整型因編譯器而異。

如果內存分配成功,它將返回內存塊的基址。這意味著指針ptr現在指向該內存塊的基址。所有分配的區域都初始化為零。它將打印內存分配消息。如果內存分配不成功,它將返回空指針。因此,它會打印內存未分配的消息。

什麼是馬洛克(malloc)?

malloc函數用於在內存中分配所需的字節量。malloc的語法如下。大小表示所需的內存(以字節為單位)。

void*malloc(大小);

函數malloc返回一個空指針,因此使用cast運算符根據所需的數據類型返回指針類型。

參考下面的帶有malloc函數的簡單C程序。

#包括

#包括

內部主(){

int ptr*=(int*)malloc(10*sizeof(int));

如果(ptr==NULL){

printf(“內存未分配”);

}

其他{

printf(“內存已分配”);

}

返回0;

}

根據上述程序,將分配內存塊。指針指向已分配內存的起始地址。返回的指針被轉換為整數類型。如果內存已分配,它將打印內存已分配消息。如果沒有分配內存,則返回空指針。因此,內存未分配消息將被打印。

分配(calloc)和馬洛克(malloc)的共同點

  • 這兩個函數都在頭文件<stdio.h>中聲明。它是標準庫頭文件。
  • 這兩個函數都用於動態內存分配。
  • calloc和malloc返回的指針應強制轉換為特定類型。
  • 在成功的內存分配中,這兩個函數都將返回一個帶有內存塊基址的指針。
  • 如果內存分配不成功,將返回空指針。

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

卡洛克vs馬洛克
calloc是C語言stdlib.h頭文件中用於動態內存分配的函數,它分配特定數量的字節並將其初始化為零。 malloc是C語言stdlib.h頭文件中用於動態內存分配的函數,它分配特定數量的字節。
意義
calloc代表連續分配。 malloc代表內存分配。
語法
calloc的語法類似於void*calloc(size\u tu num,size\t size); malloc的語法類似於void*malloc(size_t_size);。
參數個數
calloc接受兩個參數。它們是一些塊和每個塊的大小。 malloc接受一個論點。它是一個字節數。
速度
calloc比malloc花費的時間稍長。這是因為額外的一步是將分配的內存初始化為零。 malloc比calloc快。

總結 - 分配(calloc) vs. 馬洛克(malloc)

在使用數組的靜態內存分配中,內存是固定的。如果存儲的元素很少,那麼剩餘的內存將被浪費。當分配的內存小於所需內存時,也可能導致錯誤。因此,使用動態內存分配。在C語言中,calloc和malloc提供了動態內存分配。calloc和malloc的區別在於,calloc分配內存並將分配的內存塊初始化為零,而malloc分配內存但不將內存塊初始化為零。Malloc接受兩個參數,而calloc接受兩個參數。

下載calloc vs malloc的pdf文件

你可以下載這篇文章的PDF版本,並根據引文說明離線使用。請在這裡下載與malloc版本之間的差異

引用
  • 發表於 2020-10-24 03:58
  • 閱讀 ( 51 )
  • 分類:科技

你可能感興趣的文章

費舍爾(fischer)和施洛克卡賓(schrock carbene)的區別

...基或氫原子。卡賓有兩種不同的型別,如費舍爾卡賓和施洛克卡賓。 目錄 1. 概述和關鍵區別 2. 什麼是費舍爾卡賓 3. 什麼是Schrock卡賓 4. 並排比較——菲舍爾與Schrock卡賓的表格形式 5. 摘要 什麼是費舍卡賓(fischer carbene)? 費舍爾...

  • 發佈於 2020-09-22 00:32
  • 閲讀 ( 67 )

蘋果酸(malic acid)和馬來酸(maleic acid)的區別

蘋果酸和馬來酸的關鍵區別在於蘋果酸是飽和的二羧酸,而馬來酸是不飽和的二羧酸。 蘋果酸和馬來酸是二羧酸。這意味著這些化合物在同一分子中含有兩個羧基(-COOH),連線到兩個不同的碳原子上。蘋果酸和馬來酸的區...

  • 發佈於 2020-10-07 23:09
  • 閲讀 ( 55 )

投資回報率(roic)和洛克(roce)的區別

...回報率(roic)? 投資回報率(ROIC)是一種評估公司將資本分配到盈利投資的能力的指標。換言之,這表明企業如何利用資金創造收入。ROIC計算如下。 ROIC=(淨收入-股息)/使用的資本 淨收入-財政年度總收益 股息——從利潤中支...

  • 發佈於 2020-10-10 08:57
  • 閲讀 ( 44 )

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

關鍵區別–靜態記憶體分配與動態記憶體分配 在程式設計中,有必要儲存計算資料。這些資料儲存在儲存器中。在計算機程式設計中用來儲存資料的儲存器被稱為變數。變數具有特定的資料型別。因此,分配記憶體來執行程...

  • 發佈於 2020-10-11 12:09
  • 閲讀 ( 242 )

馬尾(horsetail)和馬雷斯塔爾(marestail)的區別

...年生的無花植物,而馬尾草是一年生的開花植物。 馬尾和馬齒莧是兩種雜草。馬尾是多年生植物,不是開花植物。相比之下,馬瑞斯塔爾是一年生植物和開花植物。此外,馬瑞斯塔爾是第一個對草甘膦產生抗性的植物。本篇文...

  • 發佈於 2020-10-15 18:24
  • 閲讀 ( 53 )

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

...編譯器包含標頭檔案“stdio.h”。 C有指標。動態記憶體分配是一個基本概念。指標是儲存另一個變數地址的變數。與C或Java等程式語言不同,C沒有自動垃圾回收器。因此,程式設計師應該自己進行動態記憶體分配。動態記憶體...

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

大屠殺(carnage)和毒液(venom)的區別

...次出現在1992年的第361期《神奇蜘蛛俠》。大衛米其利尼和馬克·巴格利是這個角色的創造者。卡薩迪和大屠殺比其他共生體和宿主有著更大的聯絡,因為這種共生體生活在卡西迪的血液中。由於主人的精神錯亂,大屠殺更加凶殘...

  • 發佈於 2020-10-19 14:35
  • 閲讀 ( 47 )

腎盂(nephridia)和馬氏管(malpighian tubules)的區別

腎管和馬氏管之間的主要區別取決於它們在生物體內的發生。腎管存在於低等生物中,如蠕蟲和軟體動物,而馬氏管則存在於昆蟲和陸生節肢動物的後部。 排洩是生物體的一個重要方面。代謝途徑產生各種排洩物作為副產品...

  • 發佈於 2020-10-21 23:25
  • 閲讀 ( 49 )

python(python)和c語言(c language)的區別

...和網路驅動程式。 在C語言中,程式設計師的任務是自己分配記憶體。C有calloc()、malloc()等函式用於動態記憶體分配。通常,一旦程式完成執行,作業系統就會釋放分配的記憶體。使用free()函式釋放分配的記憶體是一個...

  • 發佈於 2020-10-24 05:03
  • 閲讀 ( 54 )

文藝復興(renaissance)和巴洛克音樂(baroque music)的區別

文藝復興與巴洛克音樂 瞭解文藝復興時期音樂和巴洛克音樂之間的區別是非常有用的,因為它們是被稱為音樂的兩種普遍現象。眾所周知,音樂起源於每一種文化和文明。有數以百萬計的人熱愛音樂;有些人只是聽眾,有些...

  • 發佈於 2020-10-25 09:14
  • 閲讀 ( 63 )
HXD01FF02
HXD01FF02

0 篇文章

作家榜

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

相關推薦